Java 函数调用代码的正则表达式

Java 函数调用代码的正则表达式,java,regex,Java,Regex,我有像这样的弦 con(tRegionDefaults.committee_chairman,', Secretary & Treasurer') con('Non-Voting Member - ',tRegionDefaults.corptypelong,' Manager') con('Vice ',tRegionDefaults.committee_chairman) 尝试创建一个正则表达式,用于从每个示例中获取所有函数参数(包括参数为字符串的单引号),但是没有成功 我遇到的是

我有像这样的弦

con(tRegionDefaults.committee_chairman,', Secretary & Treasurer')
con('Non-Voting Member - ',tRegionDefaults.corptypelong,' Manager')
con('Vice ',tRegionDefaults.committee_chairman)
尝试创建一个正则表达式,用于从每个示例中获取所有函数参数(包括参数为字符串的单引号),但是没有成功

我遇到的是这个正则表达式,但它并没有给我函数参数组:

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

有人能给点提示吗?

将捕获组放在所有参数周围,而不是一个参数

\((.*)\)
不可能在单独的捕获组中获取每个参数,除非您愿意限制捕获的参数数量。捕获组是通过计算括号从regexp静态确定的——重复量词中的捕获组仍然只捕获一件事(我相信是它的第一次匹配)


因此,使用上面的regexp捕获所有参数,然后使用其他一些代码在
字符处拆分捕获的文本。

模式:
'[^']+'|(?除非需要允许嵌套括号,否则只需获取从
)的所有内容即可
。如果你必须允许嵌套括号,你需要编写一个真正的解析器,正则表达式不是正确的工具。因此,它不是免费的编码服务。你必须自己尝试解决这个问题。如果你不能让它工作,请发布你尝试过的内容,我们将帮助你修复它。@Barmar添加了一个regex I triedA regexp无法返回v组数可变。您无法匹配不同组中的每个参数。如果您使用
+
*
跟踪捕获组,它只捕获第一个匹配项。感谢您的输入。棘手的是字符串参数中也有逗号,这使得解析非常困难
'[^']+'  #Match substrings that are single quoted<br>

|        # or

(?<=con\(|,)[^,]+(?=,|\))  
#Match non-comma characters preceded by con( or comma AND followed by a comma or )