正则表达式:在匹配其他内容时查找替换
RegEx: Find&Replace, when matching on something else
首先,不知道这是否可以通过正则表达式来完成。
我有一个 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" 值,但仅在其他字段具有特定值的情况下。
更清楚:只想在 "keyword":"OK" 和 "from":"5777"
时更改 "checkId" 值
我已经找到了如何找到它:\b5777\b.*?\bOK
如何进行更换?
提前致谢。
您可以通过以下方式获取值:
\{.+\"from\":\"(\d+)\".+\"checkId\":\"(\d+)\".+\"keyword\":\"([a-zA-Z]+)\".+\}
它是相当简单的正则表达式,因此应该适用于多种语言。
然后使用 if 语句,查找 checkId
是否应该更改,并更改它。
您还可以修改捕获组并使用替换:
(\{.+\"from\":\"(\d+)\".+\"checkId\":\")(\d+)(\".+\"keyword\":\"([a-zA-Z]+)\".+\})
您可以使用这样的正则表达式:
({(?:(?!}).)*"from": "5777".*?"checkId": ")[^"]*(".*?"keyword": "OK")
它只在左大括号和下一个右大括号之间搜索。它在您要替换的部分的两侧都有两个捕获组。您可以将其替换为类似以下的字符串:
<your_new_checkId_here>
首先,不知道这是否可以通过正则表达式来完成。
我有一个 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" 值,但仅在其他字段具有特定值的情况下。 更清楚:只想在 "keyword":"OK" 和 "from":"5777"
时更改 "checkId" 值我已经找到了如何找到它:\b5777\b.*?\bOK
如何进行更换?
提前致谢。
您可以通过以下方式获取值:
\{.+\"from\":\"(\d+)\".+\"checkId\":\"(\d+)\".+\"keyword\":\"([a-zA-Z]+)\".+\}
它是相当简单的正则表达式,因此应该适用于多种语言。
然后使用 if 语句,查找 checkId
是否应该更改,并更改它。
您还可以修改捕获组并使用替换:
(\{.+\"from\":\"(\d+)\".+\"checkId\":\")(\d+)(\".+\"keyword\":\"([a-zA-Z]+)\".+\})
您可以使用这样的正则表达式:
({(?:(?!}).)*"from": "5777".*?"checkId": ")[^"]*(".*?"keyword": "OK")
它只在左大括号和下一个右大括号之间搜索。它在您要替换的部分的两侧都有两个捕获组。您可以将其替换为类似以下的字符串:
<your_new_checkId_here>