复杂的正则表达式,可以过滤单词
有人可以用正确的正则表达式来帮助我匹配line1而不是line2。 我希望匹配标准基于
下面的例子应该匹配line1而不是line2
line1 = "username 842 93.0 0.1 180740 36016 ? Sl Jan21 747:36 /some/path/somescript.py"
line2 = "username 8227 0.0 0.0 14356 2496 pts/5 S+ 11:33 0:00 grep /some/path/somescript.py"
我试过(^usernames*)(d+s*)
,它符合第1和2号标准,但不知道如何满足第3条要求。 这个在线工具可能对测试有帮助
试试这个模式:
^usernames+d+s+(?!.*grep).*some/path/somescript.py$
演示
这里没有太多解释,除了这个:
(?!.*grep)
这是一个负面的超前断言,它表示在模式中的这个确切位置,断言我们在字符串的其余部分的任何地方都找不到grep
。 那个断言被发现是真的,我们然后匹配:
.*some/path/somescript.py$
也就是说,只要行在some/path/somescript.py
结束,我们就匹配任何内容。