ColdFusion RegEx替换字符串中的标签

时间:2012-03-20 20:55:13

标签: regex coldfusion

我正在尝试重新替换字符串中的实际开始/结束标记。
例如,我想取代

<p class="style4">My Title Is This<p>


<h2>My Title Is This</h2>


我编写了下面的代码,它似乎在我的字符串中正确找到了标签,但它正在用<h2>(.+?)</h2>

<cfset this.text2 = ReReplaceNoCase(getThis.statictext, '<p[^>]+class="style4"[^>]*>(.+?)</p>', '<h2>(.+?)</h2>', "ALL")>
替换它
有人能告诉我这里缺少什么吗?

谢谢

2 个答案:

答案 0 :(得分:2)

取代这个:'<h2>(.+?)</h2>'您需要使用反向引用\1来引用子表达式(.+?)

<cfset this.text2 = ReReplaceNoCase(getThis.statictext, '<p\s[^>]+class="style4"[^>]*>(.+?)</p>', '<h2>\1</h2>', "ALL")>

希望这有帮助。

更新:根据Mike Causer的建议编辑。

答案 1 :(得分:0)

这会查找所有标记并将其删除,您可以轻松修改此标记以进行替换。

<!--- 
# STRIPTAGS
# Strip all html tags from a string 
# Receive string and return string with any and all tags striped out
--->
<cffunction name="stripTags" access="public" output="false" returntype="string" hint="Remove all HTML tags from string">
    <cfargument name="string" type="any" required="true"  hint="String to clean"/>
    <cfset var pattern = "<[^>]*>">
    <cfreturn REReplaceNoCase(arguments.string, pattern, "" , "ALL")>
</cffunction>