【发布时间】:2018-05-02 00:42:12
【问题描述】:
我的正则表达式:(?<=defining\s)[^;]*
在以下情况下应尝试查找var:
defining var;
some text defining var;
我使用一些在线工具测试了正则表达式。不幸的是,由于某种原因,它不适用于 Qt。正则表达式有问题还是我应该在代码的其他地方查找错误?这很奇怪,因为没有后视的正则表达式可以工作。
额外: 有点跑题了,但是因为我已经在写问题了:如何更改我的正则表达式,以便它可以在以下情况下找到具有多个空格的 var:
some text defining var;
现在它只找到一个空格和 var。
【问题讨论】:
-
根据this qt documentation page,
Perl's lookbehind assertions, "independent" subexpressions and conditional expressions are not supported. -
哦,那很糟糕。有没有办法在没有后向断言的情况下重写我的正则表达式?
-
你可以捕获两个部分:
(defining\s+)([^;]*)。将\s更改为\s+还允许它匹配多个空白字符。然而,使用后向断言是不可能的,因为它们必须是固定的宽度。你会得到匹配中的空白而不是后视。 -
好的,我想这就是我最终要做的。
-
您使用的是哪个版本的 Qt,因为 QRegularExpression 应该根据this blog article by the class' author 支持lookbehinds。这并没有改变您仍然无法使用可变宽度后视的事实,但出于好奇。
标签: regex qt qregularexpression