仅在结束括号存在时匹配

时间:2011-10-07 10:27:24

标签: java regex

示例:

a) asdf ghjk (qwer . - tzui
b) asdf ghjk (qwer . - tzui)
c) asdf ghjk (qwer . - tzui) opyx

我想要的是匹配a中的(qwer . - tzui和b和c中的(qwer . - tzui)。因此,如果存在一个结束括号,它应该只匹配,直到结束。

我不是真正的正则表达式专家所以我只能为第二和第三个案例提出\(.*\)这是非常微不足道的。

3 个答案:

答案 0 :(得分:1)

试试这个

\([^)\n\r]*\)?

在此处查看online on Regexr

?使前一个表达式可选,这意味着结束括号现在是可选的。

[^)\n\r]会将您的.替换为非贪婪匹配,并且意味着匹配除)\n\r之外的每个字符。我添加了\n\r以避免匹配跨行,如果现在出现问题,您可以将其删除并仅保留[^)]

答案 1 :(得分:0)

在正则表达式中的正确位置使用\\)?以匹配右括号(如果不存在则匹配)(如果不存在则匹配,不匹配)。

完整的正则表达式如下所示:

\\(.*\\)?

(如果要将正则表达式作为Java字符串输入,则需要双反斜杠。)

答案 2 :(得分:-1)

要非常简单,你可以这样做:

\(.*\)?

这样最后一个括号变成可选的。如果这对您有用,请告诉我。