Qt 中的正则表达式不正确

问题描述 投票:0回答:1

我在here检查了这个正则表达式,但在 Qt 中它不起作用并返回 false。我猜这是我的错误

rx
,但是我如何更改这个正则表达式,以便当我输入正确的总和时它会返回true(输入示例:
43+3; 32-5; -12-32; -43+53
)而且不可能输入错误的总和(输入示例:
-12+-+23; -34---3; +43+1-3
) 然后在控制台中写入正确的索引,两个数字之间的位置为
+
-

//ui->labelAnswer->text() = "12+3"
 static QRegularExpression rx("\\b[+-]"); //here's update
 QRegularExpressionMatch match = rx.match(ui->labelAnswer->text());
 qDebug() << match.hasMatch() << '\n';
 if(match.hasMatch())
{
    int index = match.lastCapturedIndex();
    qDebug() << index << '\n';
}

更新: 我在

("\b[+-]")
上更改
("\\b[+-]")
,它返回 true,但
index
不正确,等于
0

c++ regex qt
1个回答
0
投票

请注意,当在正则表达式的

'-'
子句中使用时,
[]
字符具有范围分隔符的特殊含义,例如,
"[0-9]"
匹配任何十进制数字。因此,元素
[+-]
是不正确的。为了避免当
'-'
只是一个选择字符时进行特殊处理,可以将其放置在左括号之后的第一个位置。因此,您可能希望将正则表达式拼写为
"\\b[-+]"

© www.soinside.com 2019 - 2024. All rights reserved.