RegEx找到“.php”但不与“share.php”配对时

时间:2013-05-16 17:39:50

标签: regex

我正在尝试匹配字符串“.php”,但仅当“share”不在“.php”前面时。因此,例如,应找到“test.php”,但应跳过“share.php”。

我有这个RegEx但是当我认为应该这样做时似乎没有工作。我觉得 ”。”是什么搞砸了我。

(?!.*share)\.php

任何人都可以提供一些帮助吗?

4 个答案:

答案 0 :(得分:9)

您的负面后瞻断言未正确构图。以下应该有效

(?<!share)\.php

答案 1 :(得分:2)

这些是100%确认的工作解决方案:

如果您使用的是Visual Studio,这是实现此目的的代码:

~(share)\.php

如果您只是寻找典型的RegEx(不使用Visual Studio),则可以使用:

(?<!share)\.php

感谢所有输入!

丹尼斯

答案 2 :(得分:0)

看起来你正在尝试使用否定前瞻。正确的正则表达式将是:

^(?!share)[^.]+\.php$

现场演示:http://www.rubular.com/r/wFmMH8E2WI

使用lookbehind:

^[^.]+(?<!share)\.php$

答案 3 :(得分:-2)

[^(share)]\.php 
那怎么样?

如果您使用grep

,则替代
ls | grep \.php$ | grep -v share\.php