正则表达式匹配成对括号

匹配一对括号,用于在一个html文本中提取JSon 文本。例如

{ “duration”:7599,"minBufferTime{second bracket }{third bracket} }
一对加粗的{} ,而不要中间的{}。简单写法会出现错误匹配。

在.Net Framework的正则表达式中,提供了”平衡组/递归匹配“的处理方法(见《正则表达式30分钟入门教程》

仔细研读之后,文中给出了匹配div的表达式,但是测试失败。
原文反而表达式如下:

<div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>.

仔细分析失败原因,发现其中的[^<>] 有问题,这个含义是不匹配<>中的内容,然而,html中<>到处都是啊,因此这个匹配几乎不能通过。本人将其改为任意字符匹配,就可以使用了。最后版本如下

<div[^>]*>.*(((?<Open><div[^>]*>),*)+((?<-Open></div>).*)+)*(?(Open)(?!))</div>

举一反一
匹配Json文本的表达式如下:

{[\s\S]*(((?<Open>{[\s\S]*),*)+((?<-Open>})[\s\S]*)+)*(?(Open)(?!))}

匹配的字串为

some thing 
{first line 
    {second line } something _
    {third line }somthing 
    {fourth lien } someting 

the last line } some thing 

说明上述方法,.Net 支持,其余平台或者工具不一定支持。
匹配截图

在这里插入图片描述

参考:
https://bbs.csdn.net/topics/370080437

马拉孙于泛五道口地区
2020-12-21
冬至

祝大家吃饺子快乐。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值