2016-04-26 21 views
0

我們如何處理正則表達式中的缺失字段?在正則表達式中處理跳過的字段

我有以下字符串,但有一些缺少Id ...我想我的正則表達式來讀取它存在的Id,但忽略此字段不存在的位置。如何去做呢?有什麼建議麼?

SessionId":1500000055031,"Id":235596,"Te":"XXnt", 
SessionId":1500000055031,"Id":235596,"Te":"XXnt", 
"SessionId":1500000055032,"Te":"CreateEreTree", 
"SessionId":1500000055032,"Te":"CreateEreTree", 
"SessionId":1500000055032,"Te":"CreateEreTree", 
SessionId":1500000055031,"Id":235596,"Te":"XXnt", 
SessionId":1500000055031,"Id":235596,"Te":"XXnt", 
SessionId":1500000055031,"Id":235596,"Te":"XXnt", 
SessionId":1500000055031,"Id":235596,"Te":"XXnt", 

下面是我正在使用的正則表達式。

\w*":(\d*)."\w*":(\d*),"\w*":"(\w*)", 
+0

你究竟在做什麼*做*?這看起來像一個[XY問題](http://mywiki.wooledge.org/XyProblem);一個正則表達式可能不是實現你的目標的最好方式,但如果你只是要求正則表達式的幫助,你永遠不會發現更好的方法。 – ghoti

回答

0

使用向前看符號

(?=.*"\bId\b"\s*:\s*\d+)^.*$ 

Regex Demo

假設"可能存在或不存在,有存在於您的ID,因爲它從你的輸入好像只有6位,這將是

(?=.*"?\bId\b"?\s*:\s*\d{6}[^\d])^.*$ 

Regex Demo

0

嘛,剛剛殺青的正則表達式。您可以使用可選構造?來捕獲它是否存在,否則將會忽略。

\w*":(\d*).(?:"\w*":(\d*),)?"\w*":"(\w*)",