正则表达式不包括起始字符串

时间:2012-02-16 15:53:51

标签: regex coldfusion

我正在使用像

这样的正则表达式
<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />

如果我需要,此正则表达式不应包含DESCRIBE+来计算LEN和位置值。我该怎么写呢?

3 个答案:

答案 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(假设存在匹配)。因此,第二个位置的值将与第一个捕获组相关。

ReFind

答案 2 :(得分:0)

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