如果正则表达式缺少第一个括号,则获取括号之间的所有文本

Get all text between brackets if first bracket is missed with Regex

我正在尝试编写正则表达式,它也可以匹配括号和括号之间的所有文本。但有一个条件:第一个括号可能会被遗漏。 例如:

今天是[晴天]

今天是晴天]

第一种情况我想要[晴天]。第二个我想要 今天是晴天].

我写了正则表达式,但它只适用于第一种情况。

(?(?=\[).*?|)\]

我试过像这样设置其他操作

(?(?=\[).*?|.*?)\]

但在这种情况下,我得到的是 今天是 [晴天] 而不是 [晴天].

有没有正则表达式可以解决我的问题?

假设不考虑嵌套括号,您可以简单地使用

\[?[^\]\[]*\]

或者少一点转义

\[?[^][]*]

这将有选择地匹配左方括号、任何不包含方括号和右方括号的内容。

https://regex101.com/r/97F2wM/1

(在取反字符class后添加\n以避免行重叠)