我使用像正则表达式不包括一个开始字符串
<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />
正则表达式如果我需要,这正则表达式不应该包括DESCRIBE+
在计算LEN位置值。我应该如何写它?
我使用像正则表达式不包括一个开始字符串
<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />
正则表达式如果我需要,这正则表达式不应该包括DESCRIBE+
在计算LEN位置值。我应该如何写它?
DESCRIBE +是9个字符,你不能只是加/减这个数字,并做数学。
<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(假设匹配)。因此第二个位置的值将与第一个捕获组相关。
如果ColdFusion的支持向后看,那么你可以使用(?<=DESCRIBE\+)[^>]*>
我敢肯定Java那样 - 和ColdFusion可以很容易地把它包装 – 2012-02-16 22:59:23
为什么向下票呢?这就是所要求的,它是作为正则表达式来做的。 – 2012-02-17 13:37:35