Qregexp量词捕获

Qregexp quantifier capture

这是我的问题
我在 QT 库中使用 QRegexp 来捕获像这样的序言表达式

ma(v,c).

用这个正则表达式

([a-z][A-Za-z0-9]*)(\()([A-Za-z0-9]*,)*([A-Za-z0-9]*)(\))(\.)

在这种情况下它给了我

"ma"   "("   "v"  ","   "c"   ")"    "." 

但是当我尝试这个序言句子时

ma(v,c,r).

它只给我

"ma"   "("   "c"  ","   "r"   ")"    "." 

有没有办法捕获所有量词?

在正则表达式中,组是由用户定义的,而不是由要解析的表达式定义的。我的意思是分组的数量不会根据要分析的数据而增加或减少。

当您输入 ([A-Za-z0-9]*,)* 时,并不意味着正则表达式将 return 零个或多个匹配此模式的组 [A-Za-z0-9]*,.

我的建议是分成三个操作。一个用于解析整个结构,另一个用于使用“,”拆分此 v,c,r,一个用于将所有内容放在一起:

操作 1 - 使用此正则表达式:([a-z][A-Za-z0-9]*)(\()((?:[A-Za-z0-9]*,?)*)(\))(\.)

操作 2 - 使用 , 拆分组 (3) 中的字符串以获取每个元素。

操作 3 - 连接:group(1) + group(2) + result_of_operation_2 + group(4) + group(5)