1

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

<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,代码的结构一直完全相同。唯一的事情是它也可以包含在其他代码字符串中......

4

1 回答 1

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。如果您想要/需要字符串上的单引号,那么您可以,'从函数的第二个参数中删除replaceList

于 2013-05-06T13:15:35.480 回答