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

时间:2017-06-13 17:36:31

标签: java regex

我喜欢

这样的字符串
con(tRegionDefaults.committee_chairman,', Secretary & Treasurer')
con('Non-Voting Member - ',tRegionDefaults.corptypelong,' Manager')
con('Vice ',tRegionDefaults.committee_chairman)

尝试使用正则表达式从每个示例中获取所有函数参数(包括参数为字符串的单引号),但是没有成功。

我发现的是这个正则表达式,但它没有给我组功能参数:

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

任何人都可以提示如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

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

\((.*)\)

除非您愿意限制捕获的参数数量,否则无法将每个参数都放在单独的捕获组中。通过计算括号来从正则表达式中静态确定捕获组 - 重复量词内的捕获组仍然只捕获一个事物(我相信它的第一个匹配)。

因此,使用上面的正则表达式捕获所有参数,然后使用其他一些代码将捕获的文本拆分为,个字符。

答案 1 :(得分:1)

模式:'[^']+'|(?<=con\(|,)[^,]+(?=,|\))

模式说明:

'[^']+'  #Match substrings that are single quoted<br>

|        # or

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