【问题标题】:Regex passing on regex tester but failing in qt正则表达式通过正则表达式测试器但在 qt 中失败
【发布时间】: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:我已经回答过了。

标签: c++ regex qt


【解决方案1】:

你应该双重转义,即。 \\s\\. 而不是 \s\.

【讨论】:

  • 其实不用“猜测”——C++中双引号内的文本应该符合C++标准(Draft N3797中的“2.14.5 String literals”)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
相关资源
最近更新 更多