我正在使用正则表达式测试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)
感到了同样的行为。
答案 0 :(得分:3)
你应该双重逃避即。 \\s
和\\.
代替\s
和\.