我正在寻找一个匹配连续[
和]
括号之间的字符串的正则表达式。我有一个类似于\[(.*?)\]
的正则表达式,它匹配[
]
之间的内容,它们之间可能有]
。
实施例:
String: [ text [text1] ]
应该返回[text1]
,[ text [text1] ]
目前我的正则表达式将返回[ text [text1]
我认为这必须与前瞻断言有关,但不确定如何向前看多个角色。
答案 0 :(得分:0)
以下方法返回您想要的结果:
> echo "[ text [text1] ]" | egrep -o '\[([[:alnum:]]+)\]'
> [text1]
<强>说明:强> 它只适用于扩展的正则表达式 - 因此使用 egrep 。参数 -o 仅返回匹配的模式。最后,在括号内出现一次或多次的字符类[:alnum:]包含a-z,A-Z,0-9和下划线。因此它不会接受]或[。
如果您需要匹配更多字符(例如:空格),则需要在括号内的匹配模式中添加更多字符 - 如下所示:
> echo "[ text [text1 text2] ]" | egrep -o '\[([[:alnum:] ]+)\]'
> [text1 text2]