QRegularExpression 将星号转义为字符
QRegularExpression escape Asterisk as Character
我正在尝试匹配如下所示的字符串:
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+$)
是否有一些特殊的方法来转义星号字符?
看来您需要使正则表达式匹配行的开始和结束。修复正则表达式的最简单方法是在模式的开头添加 (?m)
内联修饰符。
请注意,您的模式包含冗余部分,您可以使用具有单个分支的正则表达式:
"(?m)^\d+;\d+;\d\d(?:\*\d+)?$"
详情:
(?m)^
- 行首
\d+;\d+;
- 1+ 位和 ;
(2 次)
\d\d
- 两位数
(?:\*\d+)?
- *
和 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+$)
是否有一些特殊的方法来转义星号字符?
看来您需要使正则表达式匹配行的开始和结束。修复正则表达式的最简单方法是在模式的开头添加 (?m)
内联修饰符。
请注意,您的模式包含冗余部分,您可以使用具有单个分支的正则表达式:
"(?m)^\d+;\d+;\d\d(?:\*\d+)?$"
详情:
(?m)^
- 行首\d+;\d+;
- 1+ 位和;
(2 次)\d\d
- 两位数(?:\*\d+)?
-*
和 1+ 个数字的可选序列$
- 一行结束。