我正在尝试编写regexp,它可以匹配括号和括号之间的所有文本。但有一个条件:可以错过第一个括号。 例如:
今天是[晴天]
和
今天是晴天]
在第一种情况下,我想要 [晴天] 。第二,我想得到今天是晴天] 。
我写的是regexp,但它仅适用于第一种情况。
(?(?=\[).*?|)\]
我试图像这样设置其他动作
(?(?=\[).*?|.*?)\]
但是在这种情况下我得到今天是[晴天] 而不是 [晴天] 。
是否有正则表达式可以解决我的问题?
答案 0 :(得分:1)
假设不考虑嵌套括号,您只需使用
即可\[?[^\]\[]*\]
或稍微逃避
\[?[^][]*]
这可选择匹配一个左方括号,任何不包含方括号和结束方括号的内容。
请参阅https://regex101.com/r/97F2wM/1
(将\n
添加到否定字符类以避免行重叠)