C#爬虫试验笔记01-匹配成对括号

匹配一对括号,用于在一个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 支持,其余平台或者工具不一定支持。
匹配截图

C#爬虫试验笔记01-匹配成对括号

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

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

祝大家吃饺子快乐。

上一篇:JS学习-every()、some()


下一篇:git 错误error: failed to push some refs to