匹配一对括号,用于在一个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
冬至
祝大家吃饺子快乐。