在指定字符后使用RegEx匹配序列

nin*_*inu 19 regex

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

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

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

:([\w+.-]+)
Run Code Online (Sandbox Code Playgroud)

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

:salmon-v5-09-14-2011.jpg
Run Code Online (Sandbox Code Playgroud)

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

Boh*_*ian 40

使用后视:

(?<=:)[\w+.-]+
Run Code Online (Sandbox Code Playgroud)

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

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

(?<=:)[^\]]+
Run Code Online (Sandbox Code Playgroud)

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

  • 在JS中使用var x =“ [image:salmon-v5-09-14-2011.jpg]”; x.match(/ image:(([[\ S] [^ \]])*)/)[1]; 输出鲑鱼v5-09-14-2011.jpg` (2认同)

age*_*t-j 5

如果您始终以这种格式查看字符串,则可以使用以下模式:

(?<=\[image:)[^\]]+
Run Code Online (Sandbox Code Playgroud)

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