我正在使用正则表达式来测试是否已设置 iptables。这是试图实现的目标的精简版本。
QRegExp rx_preroute(".*DNAT\s*udp\s*--\s*anywhere\s*192\.168\.13\.115\s*to:10\.5\.110\.123:7891.*");
QString out = "DNAT udp -- anywhere 192.168.13.115 to:10.5.110.123:7891";
qDebug() << rx_preroute.exactMatch(out);
//prints out false
但是,如果我在正则表达式检查器 ( http://regexpal.com/ ) 中做同样的事情,它就会通过。在我看来,通过手动检查模式,它应该通过。 Qt 运行在默认的正则表达式语法上。我在 setPatternSyntax(QRegExp::RegExp2)
中遇到了相同的行为。
最佳答案
你应该双重转义,即。 \\s
和 \\.
而不是 \s
和 \.
关于c++ - 正则表达式通过正则表达式测试器但在 qt 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849633/