java - 如何处理正则表达式中的多个括号?

标签 java regex

我有这种类型的字符串:

文字(更多文字)

我想要做的是使用一个正则表达式来提取字符串的“更多文本”部分。到目前为止,我一直在使用这个正则表达式:

"^.*\\((.*)\\)$"

虽然它适用于很多情况,但如果我有这样的东西,它似乎会失败:

text(更多的文字(更多的文字))

我得到的是:更多文本)

我想得到的是: 更多文本(更多文本)(基本上是最外面一对括号的内容。)

最佳答案

除了惰性量化,还有一种方式是:

"^[^(]*\\((.*)\\)$"

在两个正则表达式中,在匹配组之前都有一个显式指定的左括号("\\(",带有 Java String 转义)。在原始版本中,有一个 。 * 在此之前,允许任何东西(包括其他左括号)。在我这里,左括号是不允许的(有一个 negated character class ),所以在最外面明确指定的左括号。

关于java - 如何处理正则表达式中的多个括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759770/

相关文章:

java - 创建 JWT token 时出现问题

java - 有哪些 Java 库提供了从给定字符集生成唯一随机字符串组合的功能?

regex - 如何在正则表达式中搜索嵌套项目符号列表中的单词组合?

ruby - 如何在不知道其名称的情况下使用其内容的正则表达式获取 XML 子标签

java - 选择没有子字符串的行

javascript - Tampermonkey - 无法使用正则表达式获取数据

java - Java-如何使我的代码使用更少的内存?

java - 排序器从原始序列中获取值

java - 在方法内重用变量是否安全?

Javascript 更快地替换 HTML 代码中的 "variables"