hhs 发表于 2022-7-21 10:41

好久没出教程了,IOS正则匹配的经验以及一些干货

本帖最后由 hhs 于 2022-7-21 17:46 编辑

其实有一些方法我在一些教程当中有提过思路的,可能太多东西一起讲了,你们也不知道怎么用。其实对于正则,我用来匹配的就几个而已。   
\d+ 用来匹配数字   

\w+ 用来匹配字母
   ".*?\" 匹配引号中所有字符
[^,]+ 匹配以逗号结束之前的字符
(看举例吧,这个估计有点难懂)




[^,]+    这个意思是匹配逗号之前的数据咯    这个对于只有一个逗号的情况可以用这里稍微做个纠正,如果数据内有逗号的话,会出现错误---如图
感谢一佬的提示[^,]+ 匹配以逗号结束之前的字符,这个说法问题很大
[^,]这个是匹配非逗号内容,+代表匹配一次以上,所以匹配的是任何含有非逗号内容的字符串
如:A,B,C匹配结果为ABC,第一次匹配A,第二次匹配B,第三次匹配C
你这个正则在匹配引号中有逗号的情况就会出问题
<"leveltitle": "vip,vip", >--><"leveltitle": "vip >
如果想匹配逗号结束之前的字符可以用正向预查:
.*(?=,)
<"leveltitle": "vip,vip", >--><"leveltitle": "vip,vip" >

      ps.注意的是都是英文格式下的字符 其实我用的就这几个,因为平常要接触的数据也没啥了,你们问我的一些花里胡哨的,比如有些时间格式
“2022-01-01”   这些怎么匹配肯定就是第三个了,如果数据不是在双引号里面呢?
".*?\"这里的引号可以是大括号 小括号 都行啦,自己琢磨一下 也就是匹配符号里面的所有字符了。

今天也不讲多了,再讲一点    打个比方

抓到的数据:

所知的会员数据:

比一下,发现    "leveltitle": "null", 这个下面多出来了一个"contractstatus": 2,
这种怎么匹配呢?


匹配方法:首先我们先匹配"leveltitle": "null", (null是字母不会有人不知道吧),然后因为要在他后面加数据,所以后面的 逗号 跟回车格式要注意,不要把格式弄乱了
书写(查找一栏): "leveltitle":"\w+",

我们在替换一栏里面加数据
书写(替换一栏): "leveltitle":"vip",
                           "contractstatus": 2,

这样就改好了!当然还有一个方法,就是匹配 "memberprivilegelevels",将里面的数据全部替换成会源数据

匹配方法:                                                                                                                                                                                                                                                               
书写(查找一栏):"memberprivilegelevels": [^\]]+                      
(还有其他匹配方法当时我只说我常用的这样更能理解, \ 用来转义的 )
书写(替换一栏): "memberprivilegelevels":\[\{         
"levelid": 6,      
       "leveltitle": "vip",   
                  "contractstatus": 2,      
                                              "expiretime": "2022-07-09 23:59:59",   
                     "goodsmembertype": 2
\}

这里有个细节,这里我直接匹配的    ]   之前的数据,匹配出来的数据是不包括 ] 本身的!
这些都是个人看法经验,如有错误望大佬指出





71855459 发表于 2022-7-21 16:11

[^,]+ 匹配以逗号结束之前的字符,这个说法问题很大
[^,]这个是匹配非逗号内容,+代表匹配一次以上,所以匹配的是任何含有非逗号内容的字符串
如:A,B,C匹配结果为ABC,第一次匹配A,第二次匹配B,第三次匹配C
你这个正则在匹配引号中有逗号的情况就会出问题
<"leveltitle": "vip,vip", >--><"leveltitle": "vip >
如果想匹配逗号结束之前的字符可以用正向预查:
.*(?=,)
<"leveltitle": "vip,vip", >--><"leveltitle": "vip,vip" >

祖安猎妈人 发表于 2022-10-17 03:10

直接收藏了

hhs 发表于 2022-7-23 12:58

butang 发表于 2022-7-23 09:12
谢谢分享,学习了,对正则一直怕怕的

加油加油 你能行的

zhangyangblue 发表于 2022-7-21 12:29

感觉学习到东西了

老婆是加藤惠 发表于 2022-7-21 11:06

学习了~~

zfpapio 发表于 2022-7-21 11:12

受教~~~{:1_918:}

shenyan1016 发表于 2022-7-21 11:35

厉害了,感觉学习到东西了

mywangw 发表于 2022-7-21 11:35

学习大佬经验心得

luodeman 发表于 2022-7-21 11:59

谢谢大佬,向大佬学习

zeadanews 发表于 2022-7-21 12:05

谢谢大佬,向大佬学习

aileki 发表于 2022-7-21 12:18

感谢楼主的经验分享

ufailed 发表于 2022-7-21 13:06

学到了一些东西
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 好久没出教程了,IOS正则匹配的经验以及一些干货