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 )