初始字符串为[image:salmon-v5-09-14-2011.jpg]
我想捕获文本“salmon-v5-09-14-2011.jpg”,并使用GSkinner的正则表达式工具
最接近我的期望输出的是使用这个正则表达式:
:([\w+.-]+)
问题在于该序列包含了冒号,导致输出结果变成::salmon-v5-09-14-2011.jpg
如何在不包括冒号的情况下捕获所需的输出。感谢您的帮助!
初始字符串为[image:salmon-v5-09-14-2011.jpg]
我想捕获文本“salmon-v5-09-14-2011.jpg”,并使用GSkinner的正则表达式工具
最接近我的期望输出的是使用这个正则表达式:
:([\w+.-]+)
问题在于该序列包含了冒号,导致输出结果变成::salmon-v5-09-14-2011.jpg
如何在不包括冒号的情况下捕获所需的输出。感谢您的帮助!
使用向后查找:
(?<=:)[\w+.-]+
回顾先行断言(以 (?<=someregex)
编码)是一种零宽度匹配,它断言但不捕获匹配。
此外,您的正则表达式可能可以简化为:
(?<=:)[^\]]+
该代码简单地获取位于:
和]
之间(但不包括这两个字符)的任何内容。
(?<=\[image:)[^\]]+
这里查找[image:
,然后匹配直到关闭标签]
你的正则表达式是正确的,只是你使用的工具将整个匹配结果高亮显示,而不仅仅是捕获组。将鼠标悬停在匹配结果上,看看“group 1”实际上是什么。
如果你想要一个稍微强大一点的正则表达式,可以尝试使用:([^\]]+)
,它允许文件名部分出现除了]
之外的任何字符。
var x="[image:salmon-v5-09-14-2011.jpg]"; x.match(/image:(([\S][^\]])*)/)[1];
输出salmon-v5-09-14-2011.jpg
。 - Pranoy Sarkar