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)
这是我的问题
我在 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)