Qregexp量词捕获

Qregexp quantifier capture

本文关键字:量词 Qregexp      更新时间:2023-10-16

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

马(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")"。"之前

是否有一种方法可以捕获所有的量词?

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

当您输入([A-Za-z0-9]*,)*时,并不意味着regex将返回0或多个匹配此模式的组[A-Za-z0-9]*,

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

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

操作2 -使用,在组(3)处拆分字符串以获得每个元素

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