首页 > 解决方案 > 为什么非原子断言匹配两个,一个相反?

问题描述

所以我稍微修改了 pcre2 页面上的示例

^(?*.*(?<abstrptr>[*]((?<qualifiers>\bconst\b|\brestrict\b|\bvolatile\b))*+(?C11)))(.*?\b(?&abstrptr)\b)+

我在 C 中有一个函数,它在标注 11 上打印命名组 abstrptr 内的组(所以是限定符)。

这是我要匹配的内容:

*const*restrict*volatile*const

我的输出是(第一个数字是 abstrptr 中的组 id):

 2 - const
 2 - restrict
 2 - volatile
 2 - const
full match is: 0 - 30, *const*restrict*volatile*const

我不明白为什么输出是这个顺序 - 我只是想让它反向打印(即 const volatile restrict const)。

编辑:好的,像这样:

^(?*.*(?<abstrptr>[*]((?<qualifiers>\bconst\b|\brestrict\b|\bvolatile\b))*+(?C11)))(\b(?&abstrptr)\b.*?)+

做到了,但它不再匹配模式(完全匹配)。

标签: cregexpcre

解决方案


推荐阅读