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

Regex 如果找到给定单词,则在括号之间选择正则表达式,regex,Regex,我需要制定一个正则表达式,它可以选择方括号中的文本,因为括号之间有一个特定的单词 我已经非常熟悉这个规则: /\[(.*?)ermittelbar(.*?)\]/gi (我目前的目标词是“ermittelbar”) 问题是,例如,如果我在regexr.com上测试它,我会发现如果我在我希望匹配的文本之前放置任何左括号,那么选择将扩展到包括该左括号和中间的任何内容 因此: 是匹配的。但事实也是如此: [ ]was [created ermittelbar] 除非包含目标词,否则初始选择后的结束

我需要制定一个正则表达式,它可以选择方括号中的文本,因为括号之间有一个特定的单词

我已经非常熟悉这个规则:

/\[(.*?)ermittelbar(.*?)\]/gi
(我目前的目标词是“ermittelbar”)

问题是,例如,如果我在regexr.com上测试它,我会发现如果我在我希望匹配的文本之前放置任何左括号,那么选择将扩展到包括该左括号和中间的任何内容

因此:

是匹配的。但事实也是如此:

[ ]was [created ermittelbar]
除非包含目标词,否则初始选择后的结束括号或开始括号不包括在内


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

不要使用
*
模式使用
[^\][
匹配任何字符(不包括括号):

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

详细信息

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

排除括号,。这很有效!谢谢。我在看一些老的答案,这些答案都是相同的,但无法解决如何整合它。我想知道是否需要排除结束括号@BobbleBobble:不,但你可以避免在结束括号和下一个开始括号之间进行无用的回溯。
/\[([^\][]*?)ermittelbar([^\][]*)\]/gi