我需要lex中的正向lookbehind断言(flex 2.5.35)。在调查文件后,我没有看到直接的方法来做到这一点。它有一些类似于前瞻断言(r/s语法)的东西,但不是向后看。达到相同效果的最佳方式是什么?如何在lex中使用lookbehind断言?
这里有一个例子:假设我有我的扫描仪规格文件folling规则:
a printf("matched a ");
b printf("matched b ");
c printf("matched c ");
d printf("matched d ");
我将如何匹配“d”下一个“B”和“B”本身,使在 'ABD' 的输入我会得到:
matched a matched b matched d following b
但对于一个字符串 'ACD'
matched a matched c matched d
规则:
bd printf("matched d following b ");
显然不起作用,因为它消耗b;对于 'ABD' 它输出:
matched a matched d following b
如果我有PCRE lookbehinds我可以这样写:
(?<=b)d printf("matched d following b ");
和一切都会很好,但法不支持此。
嗯,这看起来很复杂,但我想没有其他办法。 。 – justinrstout 2011-04-12 19:27:46