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



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

今天是[晴天]

今天是晴天]

在第一种情况下,我想得到[晴天]。在第二秒我想得到今天是晴天]。

我写了正则表达式,但它仅在第一种情况下有效。

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

我试图像这样设置其他动作

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

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

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

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

[?[^][]*]

或者少一点逃跑

[?[^][]*]

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

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

(在否定字符类中添加n以避免行重叠)

最新更新