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