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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Regex-所有不带.html扩展名的PHP文件相关的知识,希望对你有一定的参考价值。

我需要一个正则表达式来获取所有带有.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文件扩展名,因此引擎不知道哪个扩展名应该匹配,哪些不应该匹配。您即将实现,如果需要修改,请稍做:

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

Live demo
另一答案
您可以确保在任何地方都没有.html,并且在您要与之匹配的字符串中以.php结尾:

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

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

    ^(?!.*\.html)负前瞻。从字符串的开头(因此^),确保文件名中的任何位置都没有.html
  • [.*\.php$与以.php结尾的文件名匹配
另一答案
这将匹配没有html的.php。我用消极的眼光看待它

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

regex101的解释

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

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

[$声明行尾的位置

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

以上是关于Regex-所有不带.html扩展名的PHP文件的主要内容,如果未能解决你的问题,请参考以下文章

URL 重写 - 不带文件扩展名的重定向

REGEX 提取金额不带货币

如何在任何编辑器中通过 Regex 删除所有单行 PHP 注释行

Java的I/O系统

php输出不带html标签

在windows主机修改web.config文件中将所有html页面处理为php