处理正则表达式中的跳过的字段

时间:2016-04-26 11:03:43

标签: regex

我们如何在正则表达式中处理缺少的字段?

我有以下字符串,但有些人遗漏了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*)",

2 个答案:

答案 0 :(得分:0)

使用前瞻

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

<强> Regex Demo

假设"可以存在或不存在,并且您的ID中只有6位数字显示在您的输入中,这将是

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

<强> Regex Demo

答案 1 :(得分:0)

好吧,只是修复你的正则表达式。你可以使用可选的构造?来捕获它是否存在而忽略它。

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