用于在括号

时间:2017-10-23 22:53:27

标签: regex

I have read up on other questions/answers that get the text between square brackets - 但如果我只想获得具有特定文字的括号,那该怎么办呢。

例如,我所拥有的字符串采用以下格式:

{this is a}{string with text}{i want this bracket}{only}

我想通过只搜索{i want this bracket}want来提取所有bracketithis可以是随机文字,例如{gjddnsgwantjgnsagjbracket}

我可以通过执行以下操作将它们分成几组:

/\{(.*?)\}/g

但我不能因为我的爱而在所述捕获组内搜索以提取我想要的括号。

2 个答案:

答案 0 :(得分:1)

这应该有用......

$ echo '{i want this bracket}' | grep -E '{[^}]*want[^}]*bracket[^}]*}'
{i want this bracket}

$ echo '{gjddnsgwantjgnsagjbracket[^}]*}' | grep -E '{[^}]*want[^}]*bracket[^}]*}'
{gjddnsgwantjgnsagjbracket}

答案 1 :(得分:1)

试试这个正则表达式:

{(?=[^}]*want)(?=[^}]*bracket)[^}]+}

Click for Demo

<强>解释

  • { - 按字面意思匹配{
  • (?=[^}]*want) - 在want
  • 之前验证}是否存在的正面预测
  • (?=[^}]*bracket) - 在want
  • 之前验证}是否存在的正面预测
  • [^}]+ - 匹配任何非}
  • 字符的1次出现
  • } - 字面上匹配}