Regex-所有不带.html扩展名的PHP文件

问题描述 投票:3回答:3

我需要一个正则表达式来获取所有带有.php扩展名但不包含.html的文件。

例如:

foo.php (this file is ok)
foo.html.php (this file is not ok)
foo.bar (this file is not ok)
foo.bar.php (this file is ok)

我创建了此正则表达式:

^(?!.*(.html))

但是以这种方式,我也得到了以.bar结尾的文件(不仅是以.php结尾的文件。

php regex
3个回答
2
投票
在您自己的正则表达式中,您没有明确指定.php文件扩展名,因此引擎不知道哪个扩展名应该匹配,哪些不应该匹配。您即将实现,如果需要修改,请稍做:

^(?:.(?!\.html))*\.php$

Live demo

0
投票
您可以确保在任何地方都没有.html,并且在您要与之匹配的字符串中以.php结尾:

^(?!.*\.html).*\.php$

https://regex101.com/r/TOiJQP/4

    ^(?!.*\.html)负前瞻。从字符串的开头(因此^),确保文件名中的任何位置都没有.html
  • [.*\.php$与以.php结尾的文件名匹配

0
投票
这将匹配没有html的.php。我用消极的眼光看待它

.*(?<!\.html)\.php$

regex101的解释

(?<!html)负向后看。断言以下正则表达式不匹配html从字面上匹配html字符(区分大小写)

\.匹配字符。从字面上看(区分大小写)php从字面上匹配字符php(区分大小写)

[$声明行尾的位置

https://regex101.com/r/TOiJQP/5

© www.soinside.com 2019 - 2024. All rights reserved.