我正在使用像
这样的正则表达式<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />
如果我需要,此正则表达式不应包含DESCRIBE+
来计算LEN和位置值。我该怎么写呢?
答案 0 :(得分:1)
DESCRIBE是9个字符,你不能只是加/减这个数字并做数学。
答案 1 :(得分:1)
<cfset a = ReFind("DESCRIBE\+([^>]*>)", myResult.Header, 1, true) />
<cfif ArrayLen(a.pos) GT 1><!--- match found! --->
<cfset afterDescribePosition = a.pos[2]>
<cfset afterDescribeLength = a.len[2]>
</cfif>
ReFind(当第四个param设置为true时,就像你所做的那样)将返回一个带有两个值(pos和len)的结构。每个都是一个数组。如果你的正则表达式中没有任何捕获组(括号),那么这两个数组都只有一个值 - 代表完整的正则表达式匹配。如果您定义了捕获组(就像我在我的示例中所做的那样),那么每个数组中的后续值将与相应的捕获组相对应。在我的示例中,只有一个捕获组,因此每个数组的长度为2(假设存在匹配)。因此,第二个位置的值将与第一个捕获组相关。
答案 2 :(得分:0)
如果ColdFusion支持后视,那么您可以使用(?<=DESCRIBE\+)[^>]*>