正则 匹配大括号内的逗号

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

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式