获取括号内的所有文本,如果第一个括号错过了正则表达式
问题描述:
我正在尝试编写正则表达式,它可以匹配括号和括号之间的所有文本。但有一个条件:第一个支架可能会错过。 例如:获取括号内的所有文本,如果第一个括号错过了正则表达式
今天是[晴天]
和
今天是晴天]
在第一种情况下我想要得到[晴天]。在第二我想得到今天是阳光灿烂的日子]。
我写了正则表达式,但它只适用于第一种情况。
(?(?=\[).*?|)\]
我试图设置其他行动这样
(?(?=\[).*?|.*?)\]
但在这种情况下,我得到了今天是[晴天],而不是仅仅[晴天]。
是否有正则表达式可以解决我的问题?
答
假设嵌套括号不应被认为是可以简单地使用
\[?[^\]\[]*\]
或具有少一些逸出
\[?[^][]*]
这将任选匹配的开口正方形支架,任何内容不包含方括号和方括号。
参见https://regex101.com/r/97F2wM/1
(加入\n
到否定的字符类,以避免线重叠)
'(\ [* \。?] |^[^ \ [\]] * \])'也许作品? – apokryfos
'\ [?[^ \] \ [] * \]'应该够了。 –
感谢双方的工作! –