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
来提取所有bracket
。 i
和this
可以是随机文字,例如{gjddnsgwantjgnsagjbracket}
我可以通过执行以下操作将它们分成几组:
/\{(.*?)\}/g
但我不能因为我的爱而在所述捕获组内搜索以提取我想要的括号。
答案 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)[^}]+}
<强>解释强>
{
- 按字面意思匹配{
(?=[^}]*want)
- 在want
}
是否存在的正面预测
(?=[^}]*bracket)
- 在want
}
是否存在的正面预测
[^}]+
- 匹配任何非}
}
- 字面上匹配}