Coldfusion Regex在标签之间获取字符串

时间:2013-05-06 09:23:41

标签: regex coldfusion coldfusion-8

我们目前在我们的应用程序中定义了一些应用程序变量,并且还有一组特殊的标记,这些标记在我们的模板中处理。但是我发现拆分标签有点困难,所以我可以在模板解析时将它们转换为应用程序变量。

<cfset mystring = "[pss]'fetchMessages','VWO-Tracking-Code'[end_pss]">
<cfset the_match = REMatch("\[pss\]\s*(((?!\[pss\]|\[end_pss\]).)+)\s*\[end_pss\]",mystring) />
<cfdump var="#the_match#" />

我们的目标是在“[pss]和[end_pss]”

之间拆分字符串

上面的正则表达式只是接受字符串并将其应用于CF数组,这一切都很好。但是我严格要求它之间的代码,因为我可以将它转换为

<cfset application.snippets['VWO-Tracking-Code']>

现在它将所有内容作为一个字符串返回,我还需要第一部分来确定所需的功能类型。

非常感谢任何关于如何做到这一点的想法。

我们目前正在使用CF 8,并且代码的结构始终完全相同。唯一的问题是它也可以包含在其他代码串中......

1 个答案:

答案 0 :(得分:0)

如果您只对一组标签执行此操作,则可以使用replaceList函数而不是regEx

<cfset mystring = "[pss]'fetchMessages','VWO-Tracking-Code'[end_pss]">
<cfset mystring = replaceList(mystring,"[pss],[end_pss],'",'')>
<cfset firstitem = listfirst(mystring)>
<cfset seconditem = listlast(mystring)>
<cfdump var="#firstitem#">
<cfdump var="#seconditem#">

这会输出fetchMessagesVWO-Tracking-Code。如果您想要/需要字符串上的单引号,则可以从,'函数的第2个参数中删除replaceList