2012-02-16 101 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

相關問題