如果找到给定的单词,则在括号之间选择正则表达式

时间:2018-08-05 19:53:00

标签: regex

我需要设计出一个正则表达式,可以选择方括号括起来的文本,前提是括号之间存在一个特定的单词。

我已经很接近这个规则了:

/\[(.*?)ermittelbar(.*?)\]/gi

(我当前定位的单词是“ ermittelbar”)

问题是,例如,如果我在regexr.com上进行测试,我会发现,如果我在要匹配的文本之前放置了任何左括号,则会扩展选择范围,以包括该右括号和介于两者之间的任何内容。

所以:

[created ermittelbar]

已匹配。但是:

[ ]was [created ermittelbar]

除非我选择了目标词,否则不包括我最初选择后的开括号。

有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

使用.*代替[^\][]模式来匹配除括号之外的所有字符:

/\[([^\][]*?)ermittelbar([^\][]*)\]/gi

请参见regex demo

详细信息

  • \[-[字符
  • ([^\][]*?)-第1组:[]以外的任何字符,数量尽可能少
  • ermittelbar-文字子字符串
  • ([^\][]*)-第2组:尽可能多的[]以外的其他字符
  • \]-]字符。