正则表达式在连续打开的右括号之间返回文本

时间:2014-01-30 10:22:03

标签: regex regex-lookarounds

我正在寻找一个匹配连续[]括号之间的字符串的正则表达式。我有一个类似于\[(.*?)\]的正则表达式,它匹配[ ]之间的内容,它们之间可能有]

实施例: String: [ text [text1] ]

应该返回[text1][ text [text1] ]
目前我的正则表达式将返回[ text [text1]

我认为这必须与前瞻断言有关,但不确定如何向前看多个角色。

1 个答案:

答案 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]