Skip to main content

使用正则表达式修改数据示例

正则表达式重写支持文本数据的改写,只要你选择了text项,Hodor会尝试将Body数据解析成文本数据,然后使用正则表达式进行替换。

正则表达式支持2种方式的替换:

① 直接替换匹配到的字符串(匹配一段数据,并替换这段数据)。

例如使用正则表达式\d+将字符串"sample":"8888eeee"中的数字888替换

② 使用Group方式替换(匹配一段数据,但是只替换正则表达式小括号中的内容)。

例如使用正则表达式"sample":"(.+?)"将字符串"sample":"8888eeee"中的value部分即8888eeee替换

部分常用的示例 (所有用例均基于一个JSON数据)

{
"sessionId": 88888888,
"authList": [{
"name": "Adam",
"startTime": 1581609600000
}, {
"name": "Andrew",
"startTime": 1581609600000
}]
}

1. 替换所有匹配到的数据

将所有的数字替换为1234,正则表达式设置为\d+, 替换值设置为1234,得到的结果如下:

{
"sessionId": 1234,
"authList": [{
"name": "Adam",
"startTime": 1234
}, {
"name": "Andrew",
"startTime": 1234
}]
}

2. 单独替换某个匹配到的数据

将匹配到的数据部分替换1234,正则表达式设置为\d+, 多值匹配选择逐个匹配,并设置对应的index值,这里设置为1,替换值设置为1234,得到的结果如下:

{
"sessionId": 88888888,
"authList": [{
"name": "Adam",
"startTime": 1234
}, {
"name": "Andrew",
"startTime": 1581609600000
}]
}

3. 替换匹配到的分组数据(即替换正则表达式小括号中匹配的值)

将name的值替换为====,正则表达式式设置为"name": "(.*?)",,值设置为====,多匹配时选择全部替换,得出的结果为

{
"sessionId": 88888888,
"authList": [{
"name": "====",
"startTime": 1581609600000
}, {
"name": "====",
"startTime": 1581609600000
}]
}

4. 替换匹配到的多个分组数据(一次性替换多个group值)

在一个正则表达式中设置多个group并替换,例如将所有name替换为====,同时startTime替换为1234,正则表达式设置为"name": "(.*?)",[\s\S]*?"startTime": (\d+),替换值应使用换行符设置2个值第一行为"====",第二行为"1234",得到的结果如下

{
"sessionId": 88888888,
"authList": [{
"name": "====",
"startTime": 1234
}, {
"name": "====",
"startTime": 1234
}]
}

正则表达式参数说明:

  • 可选参数:正则表达式替换是基于系统框架NSRegularExpression具体使用您可以查看文档地址

  • 匹配范围:匹配时你可以选择正则表达式的匹配区域,location是字符串的开始位置,length表示从开始位置后的长度

  • 值替换时全部匹配:即当你的正则表达式匹配到多个数据时,将依次全部替换所有匹配到的数据

  • 值替换时逐个匹配:即当你的正则表达式匹配到多个数据时,会根据所填写的数组下标替换对应的数据