1

我正在尝试匹配看起来像这样的字符串:

7;7;52*8    
8;8;62*5    
9;9;55*1    
11;7;52*49    
12;8;62*64    
14;9;54*62

或像这样:

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;

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

以下代码适用于 notepad++ 中的正则表达式搜索

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

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

4

1 回答 1

1

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

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

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

详情

  • (?m)^- 一行的开始
  • \\d+;\\d+;- 1+ 位数和;(2 次)
  • \\d\\d- 两位数
  • (?:\\*\\d+)?- a*和 1+ 数字的可选序列
  • $- 行尾。
于 2017-01-31T14:49:00.080 回答