【发布时间】:2014-02-18 09:40:45
【问题描述】:
我正在使用正则表达式来测试是否设置了 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和\\. -
@M42 确定,因为你是绝对正确的。
-
@M42 就是这样。请将其作为答案,我会接受。
-
@Alan:我已经回答过了。