C# 通过正则平衡组匹配scrip标签中的json数据

前段在HTML页面中抓数据时碰到的一些问题,有些数据直接隐藏在script标签中了。于是想到了平衡组,分享下。

先通过HTML Agility Pack (非常强大的HTML解析工具)得到具体的HTML内容,通过具体的路径匹配所有的script标签,然后获取你想要的某个script内容,如下图:

开始通过平衡组匹配:

string pattern = @"(?isnx) \[ (?> \[(?<Open>) | \](?<-Open>) | ((?![\[\]]).)* )* (?(Open)(?!)) \]";
MatchCollection mc = Regex.Matches(content, pattern);

if (mc.Count > 0 && mc[0].Success) Console.WriteLine(mc[0].Value);

这里我只要第一个json数组,如果你想要匹配多个json直接遍历即可。

原文地址:https://www.cnblogs.com/xiongtaotao/p/9645427.html

时间: 2024-08-29 19:00:17

C# 通过正则平衡组匹配scrip标签中的json数据的相关文章

.NET正则平衡组

1        概述 平衡组是微软在.NET中提出的一个概念,主要是结合几种正则语法规则,提供对配对出现的嵌套结构的匹配..NET是目前对正则支持最完备.功能最强大的语言平台之一,而平衡组正是其强大功能的外在表现,也是比较实用的文本处理功能,目前只有.NET支持,相信后续其它语言会提供支持. 平衡组可以有狭义和广义两种定义,狭义平衡组指.NET中定义的(?<Close-Open>Expression)语法,广义平衡组并不是固定的语法规则,而是几种语法规则的综合运用,我们平时所说的平衡组通常指

python正则子组匹配

子组匹配返回找到的第一个匹配项 []表示匹配列表中的任意一个,返回找到的第一个 这样可以发现如果要查找字母的话可以使用[a-z],返回找到的第一个字母 查找数字使用[0-9],返回找到的第一个数字相当与\d 在[]中使用^表示取反的意思,所以[^0-9]相当与\D .在[]也不再是任意字符的意思,就是.本身 ***********************************************************************************************

正则表达式匹配img标签中的src获取地址

import java.util.regex.Matcher; import java.util.regex.Pattern; public class aa { public static void main(String[] args) { String htmlStr = "<img src='http://1231//1231/123/123.jpg' alt='图片'>"; Matcher m = Pattern.compile("src=\"

NFC技术:读写NFC标签中的Uri数据

1 public class UriRecord { 2 public static final Map<Byte, String> URI_PREFIX_MAP = new HashMap<Byte, String>(); 3 static { 4 URI_PREFIX_MAP.put((byte) 0x00, ""); 5 URI_PREFIX_MAP.put((byte) 0x01, "http://www."); 6 URI_PREF

实现多条件查询 匹配数据库字段中多个数据

select 'T.SYMPTOM like ' || ' or '|| REPLACE( '''%' ||REPLACE ( REPLACE( '1,2,4' , ',' , ',''%'), ',''' ,',''' )||'%''' , ',''', '%'' or T.SYMPTOM like ''' ) AS TH from dual; '1,2,4' 为要替换的字段值 T.SYMPTOM 为对应表 中 需要匹配的列 测试过 需要配合将字符串转成可执行的sql语句函数使用,否则在数据库

.NET正则基础之——平衡组

1        概述 平衡组是微软在.NET中提出的一个概念,主要是结合几种正则语法规则,提供对配对出现的嵌套结构的匹配..NET是目前对正则支持最完备.功能最强大的语言平台之一,而平衡组正是其强大功能的外在表现,也是比较实用的文本处理功能,目前只有.NET支持,相信后续其它语言会提供支持. 平衡组可以有狭义和广义两种定义,狭义平衡组指.NET中定义的(?<Close-Open>Expression)语法,广义平衡组并不是固定的语法规则,而是几种语法规则的综合运用,我们平时所说的平衡组通常指

正则表达式 零宽断言 负向零宽断言 平衡组/递归匹配

零宽断言 用于查找在某些内容(但并不包括这些内容)之前或之后的东西,像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言. (?<=exp)myexp(?=exp1) 负向零宽断言 与零宽断言类似 (?<!exp)myexp(?!exp1) 自己用上面的例子测试下 (?<=<(\w+)>).*(?=<\/\1>) 平衡组/递归匹配 这个看起来有点复杂,其实就是 push/pop. 这里很像编程语言,或者说像个语法分析器

正则表达式(二) - 零宽断言与懒惰匹配以及平衡组

小括号的作用 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp)   匹配exp,不捕获匹配的文本,也不给此分组分配组号 零宽断言 (?=exp) 匹配exp前面的位置 (?<=exp)  匹配exp后面的位置 (?!exp)  匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的位置 注释 (?#comment)

正则匹配&lt;img&gt;标签

最近需要从网页中通过正则获取img的链接,查了很多资料,最终把采用的贴出来: (?is)<img\s*((?<key>[^=]+)="*(?<value>[^"]+)")+?\s*/?> int i = 0; // previewDom = Pattern.compile("<img/s+[^>]*/s*src/s*=/s*([']?)(?<url>/S+)'?[^>]*>").mat