我正在尝试创建正则表达式来匹配具有两个或多个扩展名的文件,但我想忽略重复的扩展名。
我想要的结果示例:
videogame.exe.exe - Don't match
unknown.pdf.exe - Match
Resume.doc.docx - Match
SalesNumbers.pdf.pdf - Don't Match
summary.pdf.docx - Match
现在我有以下正则表达式:
(\.\w+)(?!\1)\.\w+
这几乎成功了。但是,如果第二个扩展名包含第一个扩展名,我就得不到匹配。下面的例子没有提供匹配,但我希望它们提供。
Resume.doc.docx
text.exe.exe1
1条答案
按热度按时间wz1wpwve1#
这个正则表达式,使用 word boundary:
或
Online Demo
正则表达式匹配如下:
| 节点|解释|
| --|--|
|
(
|分组并捕获到\1:||
\.
|- 是的||
\w+
|单词字符(a-z,A-Z,0-9,)(1次或多次(匹配最大可能量))||
)
|结束\1||
(?!
| [look ahead](https:perldoc.perl.org/perlre#Lookaround-A ssertions)查看是否有:||
\1
|与捕获\1匹配的内容||
\b
|字符(\w)和非字符锚之间的边界锚||
)
|先行结束||
\.
|- 是的||
\w+
|单词字符(a-z,A-Z,0-9,)(1次或多次(匹配最大可能量))|