我需要设计出一个正则表达式,可以选择方括号括起来的文本,前提是括号之间存在一个特定的单词。
我已经很接近这个规则了:
/\[(.*?)ermittelbar(.*?)\]/gi
(我当前定位的单词是“ ermittelbar”)
问题是,例如,如果我在regexr.com上进行测试,我会发现,如果我在要匹配的文本之前放置了任何左括号,则会扩展选择范围,以包括该右括号和介于两者之间的任何内容。
所以:
[created ermittelbar]
已匹配。但是:
[ ]was [created ermittelbar]
除非我选择了目标词,否则不包括我最初选择后的开括号。
有什么办法可以解决这个问题吗?
答案 0 :(得分:2)
使用.*
代替[^\][]
模式来匹配除括号之外的所有字符:
/\[([^\][]*?)ermittelbar([^\][]*)\]/gi
请参见regex demo。
详细信息
\[
-[
字符([^\][]*?)
-第1组:[
和]
以外的任何字符,数量尽可能少ermittelbar
-文字子字符串([^\][]*)
-第2组:尽可能多的[
和]
以外的其他字符\]
-]
字符。