2013-05-13 69 views
0

給出以下,x路+正則表達式匹配圖案

<Line> 
    <Supplier>Fuel Surcharge - 36</Supplier> 
    <Supplier>Fuel Surcharge - 35</Supplier> 
    <Supplier>46081 46150 46250 46280 46286</Supplier> 
    <Supplier>Fuel Surcharge - 35451</Supplier> 
    <Supplier>46081</Supplier> 
</Line> 

這裏的想法是,返回「真」時,節點攜帶號碼的5位與迭代。

這是我迄今所做的,

​​3210

這裏的正則表達式是提取有5位有或沒有空間,無論迭代的價值。

我得到的結果都是如此。意味着它不在某個地方。你能幫助我嗎?

謝謝。

回答

1

有兩個問題與你的表達:

  • XPath表達式(語法錯誤)的末尾沒有分號。
  • 你的正則表達式被搞砸了,它匹配所有不包含任何字符類括號,數字,大括號,數字5,空格以及星號和加號字符的內容。
  • fn:matches(xs:string?, xs:string)需要兩個字符串作爲參數,您傳遞的是第一個字符串序列。

要調用函數用於在軸步驟每個節點,將其添加爲另一個(XPath 2.0和以上)。您可以在參數中使用點.(上下文)。

嘗試像

./Supplier/matches(., "^(\d{5}\s*)+$") 

這將產生真正的第三和第五行。如果只有包含(並且沒有完全構建)fife-digit-numbers和spaces的重複模式,請從正則表達式中刪除^$

0

試試這個:matches(./Supplier, '(.*)((\d{5}(\s*))+)(.*)')