gpt4 book ai didi

regex - 如何使用vim/grep否定 future

转载 作者:行者123 更新时间:2023-12-02 00:53:55 40 4
gpt4 key购买 nike

我能够在regxr.com上构建我的Regex

/.*GET.*(?!(Chrome)).*"$/

我希望我的正则表达式与此行不匹配:
node_lum.log:C3 2019-04-15 15:00:28.954 NOTICE: 6ms 77.172.180.249 GET /users/zone/active.json?customer_name=hl_e5d4a218 HTTP/1.1 200 - - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

并匹配这个
node_lum.log:C3 2019-04-15 15:00:28.954 NOTICE: 6ms 77.172.180.249 GET /users/zone/active.json?customer_name=hl_e5d4a218 HTTP/1.1 200 - - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) asd/73.0.3683.103 Safari/537.36"

我试过同时使用vim和grep。

在vim上,我尝试了
/*GET.*\(Chrome\)\@!.*"$
/*GET.*\(\(Chrome\)\)\@!.*"$

在grep上,我尝试了
grep -P '.*GET.*(?!(Chrome)).*"$' ./grep.txt
grep -P '.*GET.*(?!Chrome).*"$' ./grep.txt

这些都没有给我我想要的比赛

最佳答案

grep中,您应该删除第一个.*(这是多余的),并确保下一个.*位于负前瞻范围内:

GET(?!.*Chrome).*"$
^^

参见 regex demoRegulex graph:

enter image description here

详细信息
  • GET-一个GET子字符串
  • (?!.*Chrome)-除rbeak字符以外的任何0+字符后,不允许Chrome字符
  • .*"$-尽可能多的除换行符以外的任何0+字符,并且必须在行尾添加"

  • 在Vim中,它看起来像
    GET\(.*Chrome\)\@!.*"$
    \(.*Chrome\)\@!是负的超前提前量。

    关于regex - 如何使用vim/grep否定 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696429/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com