使用正则表达式修改数据示例
正则表达式重写支持文本数据的改写,只要你选择了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表示从开始位置后的长度
-
值替换时全部匹配:即当你的正则表达式匹配到多个数据时,将依次全部替换所有匹配到的数据
-
值替换时逐个匹配:即当你的正则表达式匹配到多个数据时,会根据所填写的数组下标替换对应的数据