REGEX - 如何在文件名中找到两个连字符?

问题描述 投票:2回答:1

我想搜索包含两个连字符的文件名(仅限)。有些文件名有一个连字符,我只想在名称中加上两个连字符:

这个:一些文字 - 更多文字 - 更多.txt

不是这样:一些文字 - 更多text.txt

连字符总是被空间FWIW包围。

我尝试使用(.*) - (.*) - (.*)和几个变种,但结果不是我想要的。当我尝试各种组合时,我或者只用一个连字符得到任何内容或文件名。

我知道这是一个显而易见的,但我已经尝试过涉及贪婪,展望等等的正则表达式教程,但不能为我的生活解决这个问题。有人可以帮忙吗?我不是只寻找解决方案 - 我想了解我在正则表达式语法中做错了什么。

regex renaming
1个回答
5
投票

你可以使用这个正则表达式,

^[^-]*(?:-[^-]*){2}$

这在以扩展形式编写时将如下所示,

^[^-]*-[^-]*-[^-]*$

这是你想要的,但我已经通过使用量词来限制连字符的出现仅限于两个来压缩它。

Demo

如果你想扩展你的正则表达式,只需将.*更改为[^-]*以使你的正则表达式,否则.*将匹配其他连字符,导致意外的匹配结果。

^([^-]*) - ([^-]*) - ([^-]*)$

请注意,您应该使用start ^和end $ anchors来使文件名匹配整个正则表达式。

Demo with your modified regex

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