2014-01-30 37 views
0

這個表達式存在,我還是很新的破譯正則表達式。 我知道\ t \ n \ r參考標籤,換行和回車 我發現^裏面的[]意思是「不是」 但我錯過了這個特殊的正則表達式的錯綜複雜。我不知道如果我解釋XSD文件</p> <pre><code>[^~|tnr]+(~[^~|tnr]+)?(|[^~|tnr]+(~[^~|tnr]+)?)* </code></pre> <p>這裏面的正則表達式正確

它可以像這樣被打破嗎?

"[^~|\t\n\r] 
+ 
(~[^~|\t\n\r]+) 
? 
(\|[^~|\t\n\r] 
+ 
(~[^~|\t\n\r]+)?)*" 

做的第一件是指「不?|或製表符或新行或回車

其他部分看起來幾乎與添加或改變〜同和\

任何?幫助感激,謝謝

+0

是的,本質上是:'firstmatch〜secondoptionalmatch'可能與'|'之間重複('\ |'是一個字面''')。所以'aa〜bb | cc | dd〜ff | gg'會比較匹配。 – Wrikken

+0

我發現http://www.regular-expressions.info/是有幫助的。 – iamnotmaynard

回答

1

您對\t\n\r是正確的選項卡和換行符。

所以你有一個重複的字符類[^~|\t\n\r]+。這表示「一個或更多個字符,其可以比~其他任何東西,|\t\n\r

圖案的其中之一開始。

然後它有另外一個,與~字符前綴,這是可選的(在?使得可選的支架使可選位既包括~和字符類)。

那麼您有另一組括號與*後,這我ans「重複零次或多次。這組括號包含你的角色類的第三個實例,這次是|,然後是另一個可選的角色類,前面有~

最後的括號和*這個塊基本上是整個其餘模式的重複。它歸結爲一個由|字符分隔的字符串的重複模式,其中每個字符都可選地通過~分隔符來細分爲兩個字符。

相關問題