Regex 在ColdFusion中使用带有String.replaceAll的函数 #ARGUMENTS.default# #LOCAL.derp#
我期望的输出是Regex 在ColdFusion中使用带有String.replaceAll的函数 #ARGUMENTS.default# #LOCAL.derp#,regex,coldfusion,coldfusion-9,Regex,Coldfusion,Coldfusion 9,我期望的输出是bar,但我得到的是$1 bar。如何在ColdFusion9中实现这一点?首先计算foo函数,然后将该函数的字符串结果传递给replaceAll,而replaceAll不知道其输入是通过函数提供的 是一个Java方法,它接受一个正则表达式模式字符串和一个替换字符串-您不能直接传入回调函数 解决这个问题的一个方法是使用我已经创建的函数,它允许您传入一个针对每个匹配执行的函数 可以这样使用: <cffunction name="foo"> <cfargu
bar
,但我得到的是$1 bar
。如何在ColdFusion9中实现这一点?首先计算foo函数,然后将该函数的字符串结果传递给replaceAll,而replaceAll不知道其输入是通过函数提供的
是一个Java方法,它接受一个正则表达式模式字符串和一个替换字符串-您不能直接传入回调函数
解决这个问题的一个方法是使用我已经创建的函数,它允许您传入一个针对每个匹配执行的函数 可以这样使用:
<cffunction name="foo">
<cfargument name="default">
<cfoutput>#ARGUMENTS.default#</cfoutput>
<cfreturn ARGUMENTS.default />
</cffunction>
<cfset LOCAL.derp = "((bar))" />
<cfset LOCAL.derp = LOCAL.derp.replaceAll("\(\((.*)\)\)", foo('$1')) />
<cfoutput>#LOCAL.derp#</cfoutput>
#参数。组[1]。匹配#
我无法使用正则表达式,但仅供参考replaceAll
不是ColdFusion函数。这是一种方法。(修订问题标题)
<cfset Local.Derp = RegexReplace
( Pattern = '\(\((.*)\)\)'
, Text = Local.Derp
, Replacement = replaceWithG1AndOutput
) />
<cffunction name="replaceWithG1AndOutput" returntype="String" output=true>
<!---
Use Arguments.Match for "((bar))"
or Arguments.Groups[1].Match for "bar"
--->
<cfoutput>#Arguments.Groups[1].Match#</cfoutput>
<cfreturn Arguments.Groups[1].Match />
</cffunction>