正则 匹配大括号内的逗号
正则匹配大括号内的逗号,大括号有可能是多组,也有可能是嵌套的大括号内容例如:广州{南海,顺德,三水},佛山{南海,顺德,三水,{shanghai,{aaaaa,aaaaa...
正则匹配大括号内的逗号,大括号有可能是多组,也有可能是嵌套的大括号内容
例如:广州{南海,顺德,三水},佛山{南海,顺德,三水,{shanghai,{aaaaa,aaaaa}}},珠海南海,{aaa,bbb},{,,,¥¥¥,,}顺德,三水,{,,,,,,}
只替换大括号内的逗号,大括号外面的逗号不要匹配出来,谢谢各位大神了~~
我写的\{[^}]*\} 只能匹配出来大括号内的所有内容但是取不出来逗号(只取逗号) 展开
例如:广州{南海,顺德,三水},佛山{南海,顺德,三水,{shanghai,{aaaaa,aaaaa}}},珠海南海,{aaa,bbb},{,,,¥¥¥,,}顺德,三水,{,,,,,,}
只替换大括号内的逗号,大括号外面的逗号不要匹配出来,谢谢各位大神了~~
我写的\{[^}]*\} 只能匹配出来大括号内的所有内容但是取不出来逗号(只取逗号) 展开
3个回答
展开全部
这个确实比较困难啊。
主要难度在你的大括号的嵌套。
如果你的大括号的嵌套是成对出现的,我倒是有个思路,如果可行,你倒是可以试一下:
1、正则语句:\{[^\{\}]+\}
这句话可以取到最内层的“{...}”,如果没有嵌套就直接取出来了,
比如:广州{南海,顺德,三水},佛山{南海,顺德,三水,{shanghai,{aaaaa,aaaaa}}},
取出了:{南海,顺德,三水}和{aaaaa,aaaaa}
这是可以对取出的这2个替换逗号,然后将大括号替代成其他字符,比如“#”和“$”,然后再次使用正则匹配,这个就是递归了。
2、与上面的类似,不是反其道
正则语句:\}[^\{\}]+{
这句话可以找到“}”“{”之间的不包含“{”“}”的全部数据,也就是说一次性找出大括号外的数据,这种方法不能找出第一个{之前的数据和最后一个}之后的数据,这个很捡到,检索一次就好。将这些数据的逗号替换成其他字符,如“#”,然后将其他的逗号替换成你想要的字符,最后将“#”替换回逗号,结束。
个人感觉两种方法都可行,第二种方法比较简单,不需要递归,仅供参考。
主要难度在你的大括号的嵌套。
如果你的大括号的嵌套是成对出现的,我倒是有个思路,如果可行,你倒是可以试一下:
1、正则语句:\{[^\{\}]+\}
这句话可以取到最内层的“{...}”,如果没有嵌套就直接取出来了,
比如:广州{南海,顺德,三水},佛山{南海,顺德,三水,{shanghai,{aaaaa,aaaaa}}},
取出了:{南海,顺德,三水}和{aaaaa,aaaaa}
这是可以对取出的这2个替换逗号,然后将大括号替代成其他字符,比如“#”和“$”,然后再次使用正则匹配,这个就是递归了。
2、与上面的类似,不是反其道
正则语句:\}[^\{\}]+{
这句话可以找到“}”“{”之间的不包含“{”“}”的全部数据,也就是说一次性找出大括号外的数据,这种方法不能找出第一个{之前的数据和最后一个}之后的数据,这个很捡到,检索一次就好。将这些数据的逗号替换成其他字符,如“#”,然后将其他的逗号替换成你想要的字符,最后将“#”替换回逗号,结束。
个人感觉两种方法都可行,第二种方法比较简单,不需要递归,仅供参考。
百事牛
2024-10-28 广告
2024-10-28 广告
针对Excel表格的密码解锁问题,深圳奥凯丰科技有限公司提供专业的软件解决方案,旨在帮助用户快速、安全地恢复或移除表格中的保护密码。我们的软件采用先进的密码恢复技术,能够有效应对多种加密类型,包括工作簿打开密码、工作表保护密码等。用户只需简...
点击进入详情页
本回答由百事牛提供
展开全部
用你的写的匹配出来大括号内所有内容以后,结果中再匹配一次逗号即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的已经是写“对”了的,只不过你没有提取数字而已。改一下模式:'/\(([\s\s]*?)\)/',这样就能利用$matchplayers[1]得到你要的数字了。在模式中,括号有子模式的作用,也就是从左到右,括号引起的数据从1开始到n,在匹配结果中用下标1到n提取。$matchplayers[0]则是总结果。详细参考php手册。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询