Regex在连续的开始和结束括号之间返回文本

Regex在连续的开始和结束括号之间返回文本,regex,regex-lookarounds,Regex,Regex Lookarounds,我正在寻找一个正则表达式,它将匹配连续的[和]括号之间的字符串。我有一个正则表达式,看起来像这样\[(.*?\],它匹配[]之间的内容,这两个之间可能有一个] 例如: String:[text[text1]] 应返回[text1],[text[text1]] 当前我的正则表达式将返回[text[text1] 我相信这一定与前瞻断言有关,但是,我不确定如何前瞻多个字符。以下方法将返回所需的结果: > echo "[ text [text1] ]" | egrep -o '\[([[:alnu

我正在寻找一个正则表达式,它将匹配连续的
[
]
括号之间的字符串。我有一个正则表达式,看起来像这样
\[(.*?\]
,它匹配
[
]
之间的内容,这两个之间可能有一个
]

例如:
String:[text[text1]]

应返回
[text1]
[text[text1]]

当前我的正则表达式将返回
[text[text1]


我相信这一定与前瞻断言有关,但是,我不确定如何前瞻多个字符。

以下方法将返回所需的结果:

> echo "[ text [text1] ]" | egrep -o '\[([[:alnum:]]+)\]'
> [text1]
说明: 它只适用于扩展正则表达式-因此使用了egrep。参数-o仅返回匹配模式。最后,在括号内查找一次或多次出现的characterclass[:alnum:]包含a-z、a-z、0-9和下划线。因此它不接受]或[

如果需要匹配更多字符(例如:空格),则需要在括号内的匹配模式中添加更多字符-如下所示:

> echo "[ text [text1 text2] ]" | egrep -o '\[([[:alnum:] ]+)\]'
> [text1 text2]

你用的是什么正则表达式引擎?大多数引擎都不能做你想做的事:)在pcret中打招呼所需的
[text[text1 text2]
结果是
[text[text1 text2]]
[text1 text2]
。啊,是的-你说得对。我错过了(以及你对这个问题的评论)。你为什么不提出你的工作解决方案作为答案,而不是将其作为评论发布?特别是因为——正如你正确地指出的那样——在“正常”正则表达式中可能不会有解决方案。因为我喜欢给出答案。如果提问者确实提供了引擎?他正在使用,我可以基于此发布一个合适的答案。否则,例如,我提供了一个PCRE解决方案,然后s?他提到s?他正在使用.NET,那么我必须编辑并重新编写我的整个答案,这是一个痛苦的过程。好的,谢谢你澄清这一点。我只是想知道是否有一些我不知道的不成文或书面规则(比如“在你以评论的形式提出答案之前,不要发布答案”或类似的说法)。我使用的是java。我从这个链接()看到递归不受支持。所以我想这至少在java中不起作用。无论如何,谢谢你的回答。