0

采用以下正则表达式:

(?<=(&lt;|<)ref)

这将失败QRegularExpression::isValid();并将QRegularExpression::errorString();输出

后向断言不是固定长度

现在显然不是所有的正则表达式引擎都有这个限制,但显然这个有。

也许有一个面向正则表达式的解决方法?如果不是,使用 Qt 框架实现此功能的最佳和最简洁的策略是什么?

4

1 回答 1

1

由于您使用的是 PCRE 引擎,因此后视模式的长度不固定。替代品可能具有不同的长度,但即使它们的长度也是已知的(固定的),也不能具有嵌套的替代组。

因此你(?<=(&lt;|<)ref)可以写成(?<=&lt;ref|<ref). 但是,这里更灵活的解决方案是使用\K: (?:&lt;|<)ref\K。此处,nin-capturing 组将匹配&lt;or <,然后在匹配完ref所有匹配的文本后将被清除。

于 2018-04-11T17:55:25.383 回答