我试图匹配字符串“.php”,但只有当“share”不在“.php”前面时。因此,例如,应该找到“test.php”,但应该跳过“share.php”。
我有这个正则表达式,但当我认为它应该工作时它似乎不起作用。我觉得 ”。” 是什么让我搞砸了。
(?!.*share)\.php
任何人都可以提供一些帮助吗?
我试图匹配字符串“.php”,但只有当“share”不在“.php”前面时。因此,例如,应该找到“test.php”,但应该跳过“share.php”。
我有这个正则表达式,但当我认为它应该工作时它似乎不起作用。我觉得 ”。” 是什么让我搞砸了。
(?!.*share)\.php
任何人都可以提供一些帮助吗?
您的负面回溯断言被错误地框定。以下应该工作
(?<!share)\.php
这些是 100% 确认的工作解决方案:
如果您使用的是 Visual Studio,这是实现此目的的代码:
~(share)\.php
如果您只是在寻找一个典型的 RegEx(不是使用 Visual Studio),这可以:
(?<!share)\.php
感谢大家的投入!
丹尼斯
看起来您正在尝试使用负前瞻。这种情况下的正确正则表达式是:
^(?!share)[^.]+\.php$
使用后视:
^[^.]+(?<!share)\.php$
[^(share)]\.php
那个怎么样?
如果您使用 grep,则另一种选择
ls | grep \.php$ | grep -v share\.php