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

查看 162|回复 12
作者:hhs   
其实有一些方法我在一些教程当中有提过思路的,可能太多东西一起讲了,你们也不知道怎么用。其实对于正则,我用来匹配的就几个而已。     
   \d+ 用来匹配数字     
   \w+ 用来匹配字母
   ".*?\" 匹配引号中所有字符
[^,]+ 匹配以逗号结束之前的字符
(看举例吧,这个估计有点难懂)


image.png (29.26 KB, 下载次数: 0)
下载附件
2022-7-21 10:23 上传

[^,]+    这个意思是匹配  逗号  之前的数据咯    这个对于只有一个逗号的情况可以用这里稍微做个纠正,如果数据内有逗号的话,会出现错误---如图


image.png (28.27 KB, 下载次数: 0)
下载附件
2022-7-21 17:43 上传

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

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

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

抓到的数据:




image.png (17.6 KB, 下载次数: 0)
下载附件
2022-7-21 10:25 上传

所知的会员数据:



image.png (19.81 KB, 下载次数: 0)
下载附件
2022-7-21 10:26 上传


比一下,发现    "leveltitle": "null", 这个下面多出来了一个  "contractstatus": 2,

这种怎么匹配呢?



image.png (68.46 KB, 下载次数: 0)
下载附件
2022-7-21 10:27 上传


匹配方法:    首先我们先匹配  "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
\}
  


image.png (38.79 KB, 下载次数: 0)
下载附件
2022-7-21 10:28 上传

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

逗号, 数据

71855459   

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

直接收藏了
hhs
OP
  


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

加油加油 你能行的
zhangyangblue   

感觉学习到东西了
老婆是加藤惠   

学习了~~
zfpapio   

受教~~~
shenyan1016   

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

学习大佬经验心得
luodeman   

谢谢大佬,向大佬学习
您需要登录后才可以回帖 登录 | 立即注册

返回顶部