我正在尝试匹配字符串“.php”,但仅当“share”不在“.php”前面时。因此,例如,应找到“test.php”,但应跳过“share.php”。
我有这个RegEx但是当我认为应该这样做时似乎没有工作。我觉得 ”。”是什么搞砸了我。
(?!.*share)\.php
任何人都可以提供一些帮助吗?
答案 0 :(得分:9)
您的负面后瞻断言未正确构图。以下应该有效
(?<!share)\.php
答案 1 :(得分:2)
这些是100%确认的工作解决方案:
如果您使用的是Visual Studio,这是实现此目的的代码:
~(share)\.php
如果您只是寻找典型的RegEx(不使用Visual Studio),则可以使用:
(?<!share)\.php
感谢所有输入!
丹尼斯
答案 2 :(得分:0)
看起来你正在尝试使用否定前瞻。正确的正则表达式将是:
^(?!share)[^.]+\.php$
使用lookbehind:
^[^.]+(?<!share)\.php$
答案 3 :(得分:-2)
[^(share)]\.php
那怎么样?
如果您使用grep
,则替代ls | grep \.php$ | grep -v share\.php