27

初始字符串是[image:salmon-v5-09-14-2011.jpg]

我想捕获文本“salmon-v5-09-14-2011.jpg”并使用GSkinner 的 RegEx 工具

最接近我想要的输出的是使用这个 RegEx:

:([\w+.-]+)

问题是这个序列包括冒号,输出变成

:salmon-v5-09-14-2011.jpg

如何在没有冒号的情况下捕获所需的输出。谢谢您的帮助!

4

3 回答 3

69

使用后视:

(?<=:)[\w+.-]+

后视(编码为(?<=someregex))是零宽度匹配,因此它断言但不捕获匹配。

此外,您的正则表达式可能可以简化为:

(?<=:)[^\]]+

它只是抓住(但不包括) a:和 a之间的任何东西]

于 2012-05-26T19:08:22.607 回答
6

如果您总是查看该格式的字符串,我会使用这种模式:

(?<=\[image:)[^\]]+

这在后面寻找[image:,然后匹配直到结束]

于 2012-05-26T19:09:51.103 回答
1

您只有正确的正则表达式,您使用的工具是突出显示整个匹配,而不仅仅是您的捕获组。将鼠标悬停在比赛上,看看“第 1 组”实际上是什么。

如果您想要一个更强大的正则表达式,您可以尝试:([^\]]+)允许除]文件名部分之外的任何字符。

于 2012-05-26T18:57:04.920 回答