我想在一行中获取括号的内容。中括号可以是 () 或 []。
我写了这个 [\[\().*[\)\]]
但它也匹配 (something]
。
我想匹配 (some)
或 [this]
而不是 [this)
你能指导我吗?
最佳答案
我假设方括号或圆括号之间的内容
既不能包括“自己的”括号也不能包括“其他”括号,
所以像这样的字符:[
, ]
, (
and )
在内容中是被禁止的
匹配。
为了使正则表达式更有用,我放置了 2 个捕获组,#1 介于
[
and ]
和 (
and )
之间的 #2,以协助确定
捕获的内容周围有哪些括号。
要匹配方括号之间的内容(使用捕获组),您需要:
\[([^\[\]()]+)\]
并匹配圆括号之间的内容(圆括号,也有 捕获组)你需要:
\(([^\[\]()]+)\)
以上“部分”正则表达式(对于每个变体)都是替代品
最终的正则表达式,所以它们用 |
分隔。
所以,完整的正则表达式是:
\[([^\[\]()]+)\]|\(([^\[\]()]+)\)
对于像[xxxx]
这样的源文本,xxxx
将被捕获为第 1 组,
而在 (yyyy)
的情况下,yyyy
将被捕获为第 2 组。
关于java - 正则表达式匹配括号的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871068/