我需要一个正则表达式来获取所有带有.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$
regex101的解释
(?<!html)
负向后看。断言以下正则表达式不匹配html从字面上匹配html字符(区分大小写)
\.
匹配字符。从字面上看(区分大小写)php从字面上匹配字符php(区分大小写)[
$
声明行尾的位置