我正在尝试编写正则表达式,它也可以匹配括号和括号之间的所有文本。但有一个条件:第一个括号可能会被错过。例如:
今天是[晴天]
和
今天是晴天]
在第一种情况下,我想得到[晴天]。在第二秒我想得到今天是晴天]。
我写了正则表达式,但它仅在第一种情况下有效。
(?(?=[).*?|)]
我试图像这样设置其他动作
(?(?=[).*?|.*?)]
但在这种情况下,我得到今天是[晴天]而不仅仅是[晴天]。
是否有正则表达式可以解决我的问题?
假设不考虑嵌套括号,您可以简单地使用
[?[^][]*]
或者少一点逃跑
[?[^][]*]
这将选择性地匹配左方括号、不包含方括号的任何内容和右方括号。
见 https://regex101.com/r/97F2wM/1
(在否定字符类中添加n
以避免行重叠)