我无法定义允许两个标签之间的任何文本(包括那些标签)的表达式。
示例:
#ifdef
asdasdasdasdasdsasd
asdasdasdasdasdasdasd
asdasdasdasdasdasasd
#endif
它也应该允许
#ifdef
asdasdasd
asdasdsad
#ifdefasdasdasd
asdasdasd
#endif#endif
asdasdasd
asdasdasd
#endif
所以你可以看到,只要它以#ifdef开头和结尾,并且endif内的任何文字都应该没问题。
任何人都可以帮我创建这样的表达吗?
到目前为止我尝试的是:
H_IF_IGNORE
= ("#ifdef) _
H_IF_IGNORE / (!"#endif"i SourceCharacter)*
"#endif"
但它效果不好,最后在最后一个结束后消耗了更多的文字。
祝你好运
答案 0 :(得分:1)
内部部分可以是另一个#ifdef
或SourceCharacter
重复,因此这两个部分都需要在括号中。
尝试以下几点:
H_IF_IGNORE
= "#ifdef" _*
(H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
"#endif"
SourceCharacter = .
_ = [\s\n]