排除模式正则表达式问题

时间:2011-08-09 10:31:57

标签: regex perl

/<%(?:==|=|#)?[^>]*%>/;

这个正则表达式并不完全符合我的需要。 [^>]部分应为no pattern of '%>'

这是可用的正则表达式功能: http://docs.kde.org/stable/en/kdebase-runtime/kate/regular-expressions.html

(贪婪量词没有?

1 个答案:

答案 0 :(得分:4)

您链接的文档表示支持前瞻,因此这应该有效:

/<%(?:==|=|#)?(?:(?!%>).)*%>/

(?:(?!%>).)*允许点一次匹配一个字符,之后,前瞻确保该字符不是%>序列的开头。如果支持非贪婪量词的话,这就是非贪婪的点星在.*?%>中所做的有效。

顺便说一句,(?:==|=|#)?并没有真正为你做任何事情。如果该部分应该是必需的,则应删除?。如果没有,你也可以删掉整个东西;它只占用空间。