java - 正则表达式匹配括号的内容

标签 java regex

我想在一行中获取括号的内容。中括号可以是 () 或 []。

我写了这个 [\[\().*[\)\]] 但它也匹配 (something]。 我想匹配 (some)[this] 而不是 [this) 你能指导我吗?

最佳答案

我假设方括号或圆括号之间的内容 既不能包括“自己的”括号也不能包括“其他”括号, 所以像这样的字符:[, ], ( and ) 在内容中是被禁止的 匹配。

为了使正则表达式更有用,我放置了 2 个捕获组,#1 介于 [ and ]( and ) 之间的 #2,以协助确定 捕获的内容周围有哪些括号。

要匹配方括号之间的内容(使用捕获组),您需要:

\[([^\[\]()]+)\]

并匹配圆括号之间的内容(圆括号,也有 捕获组)你需要:

\(([^\[\]()]+)\)

以上“部分”正则表达式(对于每个变体)都是替代品 最终的正则表达式,所以它们用 | 分隔。

所以,完整的正则表达式是:

\[([^\[\]()]+)\]|\(([^\[\]()]+)\)

对于像[xxxx] 这样的源文本,xxxx 将被捕获为第 1 组, 而在 (yyyy) 的情况下,yyyy 将被捕获为第 2 组。

关于java - 正则表达式匹配括号的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871068/

相关文章:

java - 正则表达式中的 Unicode 脚本

JAVA 6 不支持 SNI,有其他方法可以通过 TLS 验证和接受 SSL 证书吗?

regex - 继续 bash 脚本

javascript - 从 php 文件中去除空格

javascript - 正则表达式用 html 文档中的 JavaScript 替换某些类名

c# - 从字符串源列表动态生成最短正则表达式

java - 破局是什么意思?

java - 生成随机但静态的测试数据

java - 在 Hibernate 中使用 createSQLQuery 选择 scope_identity()

javascript - 匹配任何不是字符串 "ABCD"的正则表达式