我想搜索包含两个连字符的文件名(仅限)。有些文件名有一个连字符,我只想在名称中加上两个连字符:
这个:一些文字 - 更多文字 - 更多.txt
不是这样:一些文字 - 更多text.txt
连字符总是被空间FWIW包围。
我尝试使用(.*) - (.*) - (.*)
和几个变种,但结果不是我想要的。当我尝试各种组合时,我或者只用一个连字符得到任何内容或文件名。
我知道这是一个显而易见的,但我已经尝试过涉及贪婪,展望等等的正则表达式教程,但不能为我的生活解决这个问题。有人可以帮忙吗?我不是只寻找解决方案 - 我想了解我在正则表达式语法中做错了什么。
你可以使用这个正则表达式,
^[^-]*(?:-[^-]*){2}$
这在以扩展形式编写时将如下所示,
^[^-]*-[^-]*-[^-]*$
这是你想要的,但我已经通过使用量词来限制连字符的出现仅限于两个来压缩它。
如果你想扩展你的正则表达式,只需将.*
更改为[^-]*
以使你的正则表达式,否则.*
将匹配其他连字符,导致意外的匹配结果。
^([^-]*) - ([^-]*) - ([^-]*)$
请注意,您应该使用start ^
和end $
anchors来使文件名匹配整个正则表达式。