0

尝试通过正则表达式删除一些遵循模式的代码

<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>能像在其他引擎中一样工作。

4

2 回答 2

1

没有理由你写的东西不应该工作(除了.不匹配没有设置适当标志的换行符),但通常惰性匹配不是最有效的做事方式,使用这样的模式可能会更好:

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

关键部分是:

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

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

(根据您使用的正则表达式引擎,您可能需要将所有格更改++为简单的 greedy +

于 2013-11-05T17:49:45.210 回答
0

这个正则表达式应该适用于你想要做的事情

<cfif CheckMember.RecordCount gt 0>.*?</cfif>
于 2013-11-05T17:37:19.113 回答