我有一个字符串,它基本上包含错误信息,我想从错误字符串中捕获重要信息
我有以下错误字符串。
trackingID=jskdf-77sdkj-oij4-kerj43-lklfds;
key1=lksfjsdkjfkslkdjf;
key2=skjfjdkfj43jrkjskd;
key3=lksfjsdkjfkslkdjf;
key4=skjfjdkfj43jrkjskd;
{
"info":{
"details":[
{
"code":"ABC23423",
"messages":"msg:INVALID_ERROR",
"timeStamp":"2019-08-30T15:03:43.668Z"
}
],
"$httpStatus":400
},
"status":400,
"test":"ABC2342fdsff3",
"contactDetails":{
"primaryCommunication":{
"addressLine1":"231 London 71",
"addressLine2":"",
"addressLine3":"",
"city":"London",
"country":"England",
"countryCode":"GB",
"postalCode":"TW33ER",
"usage":"Home",
"county":"ENGLAND",
"stateCode":"",
"state":""
},
"name":{
"number":"45765767343",
"title":"Mr",
"firstName":"Nitin",
"lastName":"Dumbre",
"address":"nitin-d@gmail.com",
"code":"+44"
},
"email":{
"address":"nitin-d@gmail.come"
},
"phone":[
{
"number":"44 7647632746732",
"code":"Home"
}
],
"preferredCountry":{
"code":""
},
"preferredLanguage":""
}
}
我想捕获以下属性值:
- 跟踪ID
- 代码
- 消息
- 状态
我已经形成了下面的正则表达式来捕获这些详细信息
(trackingID|\\"code|\"messages|\"status\\")(=|\\":\\"|:)([^(;|\\"|,)]*)
上述正则表达式并非在所有情况下都有效。例如,给定的字符串 \"code\":\"
会多次出现,因此代码值会被覆盖。
我想捕获位于 \"messages\":\"
属性之前的值 code 属性。
你能帮我改进正则表达式吗?
最佳答案
要解决您的问题,您可以使用 GSON 而不是 REGEX,它将是更干净且不太复杂的解决方案。
关于java - 正则表达式从 errorString 捕获多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247859/