正则表达式匹配模式与特定的取消资格

时间:2016-09-28 19:28:26

标签: regex regex-negation regex-lookarounds regex-greedy

我有一个正则表达式,它将从URL的末尾删除.php:

^(.*)\.php$

这将与www.mysite.com/something.php匹配,第一个捕获组是www.mysite.com/something

我想调整一下以匹配所有这样的网址,不包括特定的网址路径。例如" exclude.php"不应该匹配,因此留下.php

www.mysite.com/exclude.php - > www.mysite.com/exclude.php

但是对于任何其他路径,它应该删除它:

www.mysite.com/anythingelse.php - > www.mysite.com/anythingelse

1 个答案:

答案 0 :(得分:1)

您可以使用负面的lookbehind来排除.php之前的文字:

^(.+)(?<!\/exclude)\.php$

RegEx Demo

如果(?<!\/exclude)前面有.php

,那么

/exclude会断言失败