QRegularExpression将星号转换为字符

时间:2017-01-31 14:29:51

标签: regex qt wildcard qregularexpression

我试图匹配看起来像这样的字符串:

7;7;52    
8;8;62    
9;9;55    
11;7;52    
12;8;62    
14;9;54

或者像这样:

QRegularExpression re("(^\\d+;\\d+;\\d\\d$)|(^\\d+;\\d+;\\d\\d\\*\\d+$)");
QRegularExpressionMatch match;

我使用以下代码。

(^\d+;\d+;\d\d$)|(^\d+;\d+;\d\d\*\d+$)

匹配第一部分是有效的,但第二部分似乎在星号部分打破。

以下代码适用于notepad ++

中的正则表达式搜索
            filepathlist[*size] = d_path;

是否有一些特殊的方法来逃避星号字符?

1 个答案:

答案 0 :(得分:1)

您似乎需要使正则表达式匹配的开头和结尾。修复正则表达式的最简单方法是在模式的开头添加(?m)内联修饰符。

请注意,您的模式包含冗余部分,您可以使用带有单个分支的正则表达式:

 "(?m)^\\d+;\\d+;\\d\\d(?:\\*\\d+)?$"

<强>详情:

  • (?m)^ - 开始行
  • \\d+;\\d+; - 1位数和;(2次)
  • \\d\\d - 两位数
  • (?:\\*\\d+)? - *和1+位数的可选序列
  • $ - 行尾。