2012-02-16 98 views

回答

1

DESCRIBE +是9个字符,你不能只是加/减这个数字,并做数学。

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(当第四个参数是设置为true,因为你已经完成)将返回两个值(位置和len)的结构。每一个都是一个数组。如果您的正则表达式中没有任何捕获组(括号),那么这两个数组将只有一个值 - 表示完整的正则表达式匹配。如果您定义了捕获组(如我在示例中那样),则每个阵列中的后续值将与相应的捕获组相对应。在我的例子中,只有一个捕获组,所以每个数组的长度都是2(假设匹配)。因此第二个位置的值将与第一个捕获组相关。

ReFind

0

如果ColdFusion的支持向后看,那么你可以使用(?<=DESCRIBE\+)[^>]*>

+0

我敢肯定Java那样 - 和ColdFusion可以很容易地把它包装 – 2012-02-16 22:59:23

+0

为什么向下票呢?这就是所要求的,它是作为正则表达式来做的。 – 2012-02-17 13:37:35

相关问题