我使用像正則表達式不包括一個開始字符串
<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