RegEx:Find& Replace,匹配其他内容时

时间:2015-07-30 23:03:15

标签: regex replace find

首先,不知道这是否可以通过正则表达式完成。

我有一个像这样的Json:

{"transfId":"S0722182156164591494745777M","messageId":"123","from":"5777","to":"59395436474","status":-1,"checkId":"1975","price":0,"keyword":"OK","errorCode":601,"errorMessage":"SUCCESS","date":"20150730 09:00:00","model":"wer_tr"}

在包含6000行的文件中,并且只需更改“checkId”值,但仅限于在其他字段中具有特定值的情况。 更清楚:只想在“关键字”时更改“checkId”值:“确定”和“从”:“5777”

我找到了如何找到它:\b5777\b.*?\bOK 如何更换? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容获取值:

\{.+\"from\":\"(\d+)\".+\"checkId\":\"(\d+)\".+\"keyword\":\"([a-zA-Z]+)\".+\}

DEMO

这是一个相当简单的正则表达式,所以应该使用多种语言。 然后使用if statment,查找是否应更改checkId并更改它。 您还可以修改捕获组并使用替换:

(\{.+\"from\":\"(\d+)\".+\"checkId\":\")(\d+)(\".+\"keyword\":\"([a-zA-Z]+)\".+\})

DEMO

答案 1 :(得分:0)

您可以使用这样的正则表达式:

({(?:(?!}).)*"from": "5777".*?"checkId": ")[^"]*(".*?"keyword": "OK")

它只在打开的大括号和下一个结束大括号之间进行搜索。它要在要替换的部件的两侧有两个捕获组。您可以用以下字符串替换它:

$1<your_new_checkId_here>$2

https://regex101.com/r/fY8pA7/1