用正则表达式解析JSON字符串

正则表达式 1377 次浏览
目前JSON格式数据使用很广泛,无论在C#和Java中都经常会用到。解析JSON字符串,往往要依赖第三方库。偶尔一个小功能,需引用第三方库来解析JSON有点得不偿失。反而直接用正则进行匹配更为直接有效(个人观点,不喜勿喷)。以下面JSON为例:{"kpjh":"","fpdm":"051002550521","fphm":"43460571","fplxdm":"026","hjse":"0.00...

3.2 .NET正则-平衡组

正则表达式 2027 次浏览
1概述 平衡组是微软在.NET中提出的一个概念,主要是结合几种正则语法规则,提供对配对出现的嵌套结构的匹配。.NET是目前对正则支持最完备、功能最强大的语言平台之一,而平衡组正是其强大功能的外在表现,也是比较实用的文本处理功能,目前只有.NET支持,相信后续其它语言会提供支持。 平衡组可以有狭义和广义两种定义: 狭义平衡组指.NET中定义的(?Expression)语法; 广义平衡...

3.1 .NET正则-正则匹配模式

正则表达式 2054 次浏览
1.概述 匹配模式指的是一些可以改变正则表达式匹配行为的选项或修饰符。不同的语言支持的匹配模式不同,使用的方式也不同。 一般可分为全局和内联两种。下面主要介绍.NET中的匹配模式。 2.匹配模式 2.1全局匹配模式和内联匹配模式概述 .NET中的全局匹配模式是通过RegexOptions枚举值指定的,可以按位“或”进行组合,全局匹配模式只能作用于整个正则表达式。全局匹配模式提供的...

2.4 高级应用-贪婪与非贪婪

正则表达式 2137 次浏览
忽略优先和匹配优先或者叫做正则表达式匹配的贪婪与非贪婪模式。 标准量词修饰的子表达式,在可匹配可不匹配的情况下,总会先尝试进行匹配,称这种方式为匹配优先,或者贪婪模式。此前介绍的一些量词,“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“”都是匹配优先的。 一些NFA正则引擎支持忽略优先量词,也就是在标准量词后加一个“?”,此时,在可匹配可不匹配的情况下,总会先忽略匹配,只有在...

2.3 高级应用-环视

正则表达式 2014 次浏览
一、环视(LookAround)概念 环视只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度的。 环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。环视相当于对所在位置加了一个附加条件。 语法: (?<=Expression)逆序肯定环视,表示所在位置左侧能够匹配Expression (?<!Expression)逆序否定环视,表示所在位置左...

2.2 高级应用-反向引用

正则表达式 1996 次浏览
一、反向引用概念 捕获组匹配的内容,可以在正则表达式的外部程序中进行引用,也可以在表达式中进行引用,表达式中引用的方式就是反向引用。 反向引用通常用来查找重复的子串,或是限定某一子串成对出现。 语法: \1,\2对序号为1和2的捕获组的反向引用 \k对命名为name的捕获组的反向引用 举例: “(a|b)\1”在匹配“abaa”时,匹配成功,匹配到的结果是“aa”。“(a|b...

2.1 高级应用-捕获组

正则表达式 1888 次浏览
一、捕获组定义 1.捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或手动命名的组里,以供后面引用。 (Expression)普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里,从1开始进行编号 (?Expression)命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里 普通捕获组(在不产生...

1.4 正则基础-NFA引擎匹配原理

正则表达式 1820 次浏览
1.为什么要了解引擎匹配原理 一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。 作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣...

1.3 正则基础-量词、分支结构

正则表达式 1809 次浏览
量词(Quantifier) 量词表示一个子表达式可以匹配的次数。量词可以用来修饰一个字符、字符组,或是用()括起来的子表达式。一些常用的量词被定义成独立的元字符。 {m}表达式匹配m次如:“\d{3}”相当于“\d\d\d”“(abc){2}”相当于“abcabc” {m,n}表达式匹配最少m次,最多n次如:“\d{2,3}”可以匹配“12”或“321”等2到3位的数字 {m,}表达...