2013-02-05 42 views
0

我想通過以下方式我做了解析的ISO 8601持續時間:可選,並以任意順序

P(\d+Y)?(\d+M)?(\d+D)?(\d+W)?T(\d+H)?(\d+M)?(\d+S)? 

但問題是,它的工作原理上PT158M12S但不是PT12S158M。是否有可能讓P之後的組和T之後的組以任意順序排列?

+0

只是置換它們。 P之後的部分有12個排列,T之後的部分有6個排列。 – nhahtdh

+0

你需要什麼正則表達式? – Bergi

回答

2

嘗試

P(\d+[YMDW]){0,4}T(\d+[HMS]){0,3} 

(短版羅希特的回答)

但是這並不妨礙重複任何一組,例如PT1M2M。之後你必須檢查。

+2

這不會阻止重複組,這就是爲什麼我刪除了我的答案。 –

+0

重複的組可以用幾行代碼來解決,不需要爲了保存幾行代碼而使正則表達式過於複雜或不可讀。 – KurzedMetal

+0

我不認爲一個簡單的正則表達式可以做到這一點,有時最好是後處理正則表達式匹配的結果... –

相關問題