coldfusion - 正则表达式 - 因为懒惰不起作用

时间:2013-11-05 17:24:11

标签: regex coldfusion

尝试通过正则表达式删除一些代码

的代码
<cfif CheckMember.RecordCount gt 0>[SOME TEXT HERE ALL I KNOW IS IT DOENST CONTAIN A </cfif>]</cfif>

所以我需要在第一位之后找到</cfif>的第一次出现。问题是懒惰不起作用,它只是得到一切。有什么方法可以获得某些文本和第一次出现的单词之间的所有内容吗?

我希望<cfif CheckMember.RecordCount gt 0>.+?</cfif>可以像在其他引擎中那样工作。

2 个答案:

答案 0 :(得分:1)

没有理由你写的不应该工作(除了.没有匹配的新行没有设置适当的标志),但一般来说,懒惰匹配不是最有效的方法,并且使用模式像这样可能会更好:

<cfif CheckMember\.RecordCount gt 0>(?:[^<]++|<(?!/cfif>))*</cfif>

关键部分是:

(?:
    [^<]++
|
    <(?!/cfif>)
)*

即。不是角括号,也不是没有开始</cfif>序列的角括号。

(根据您使用的正则表达式引擎,您可能需要将占有性++更改为简单的贪婪+

答案 1 :(得分:0)

此正则表达式适用于您要执行的操作

<cfif CheckMember.RecordCount gt 0>.*?</cfif>