目前JSON格式数据使用很广泛,无论在C#和Java中都经常会用到。解析JSON字符串,往往要依赖第三方库。偶尔一个小功能,需引用第三方库来解析JSON有点得不偿失。反而直接用正则进行匹配更为直接有效(个人观点,不喜勿喷)。以下面JSON为例:{"kpjh":"","fpdm":"051002550521","fphm":"43460571","fplxdm":"026","hjse":"0.00...
"演过无痕"-CSDN博客
正则基础http://blog.csdn.net/lxcnn/article/category/538256
.NET正则http://blog.csdn.net/lxcnn/article/category/538257
1概述
平衡组是微软在.NET中提出的一个概念,主要是结合几种正则语法规则,提供对配对出现的嵌套结构的匹配。.NET是目前对正则支持最完备、功能最强大的语言平台之一,而平衡组正是其强大功能的外在表现,也是比较实用的文本处理功能,目前只有.NET支持,相信后续其它语言会提供支持。
平衡组可以有狭义和广义两种定义:
狭义平衡组指.NET中定义的(?Expression)语法;
广义平衡...
1.概述
匹配模式指的是一些可以改变正则表达式匹配行为的选项或修饰符。不同的语言支持的匹配模式不同,使用的方式也不同。
一般可分为全局和内联两种。下面主要介绍.NET中的匹配模式。
2.匹配模式
2.1全局匹配模式和内联匹配模式概述
.NET中的全局匹配模式是通过RegexOptions枚举值指定的,可以按位“或”进行组合,全局匹配模式只能作用于整个正则表达式。全局匹配模式提供的...
忽略优先和匹配优先或者叫做正则表达式匹配的贪婪与非贪婪模式。
标准量词修饰的子表达式,在可匹配可不匹配的情况下,总会先尝试进行匹配,称这种方式为匹配优先,或者贪婪模式。此前介绍的一些量词,“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“”都是匹配优先的。
一些NFA正则引擎支持忽略优先量词,也就是在标准量词后加一个“?”,此时,在可匹配可不匹配的情况下,总会先忽略匹配,只有在...
一、环视(LookAround)概念
环视只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度的。
环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。环视相当于对所在位置加了一个附加条件。
语法:
(?<=Expression)逆序肯定环视,表示所在位置左侧能够匹配Expression
(?<!Expression)逆序否定环视,表示所在位置左...
一、反向引用概念
捕获组匹配的内容,可以在正则表达式的外部程序中进行引用,也可以在表达式中进行引用,表达式中引用的方式就是反向引用。
反向引用通常用来查找重复的子串,或是限定某一子串成对出现。
语法:
\1,\2对序号为1和2的捕获组的反向引用
\k对命名为name的捕获组的反向引用
举例:
“(a|b)\1”在匹配“abaa”时,匹配成功,匹配到的结果是“aa”。“(a|b...
一、捕获组定义
1.捕获组
捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或手动命名的组里,以供后面引用。
(Expression)普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里,从1开始进行编号
(?Expression)命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里
普通捕获组(在不产生...
1.为什么要了解引擎匹配原理
一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符的组合,使得乐曲更动听。
作为正则的使用者也一样,不懂正则引擎原理的情况下,同样可以写出满足需求的正则,但是不知道原理,却很难写出高效且没有隐患的正则。所以对于经常使用正则,或是有兴趣...
量词(Quantifier)
量词表示一个子表达式可以匹配的次数。量词可以用来修饰一个字符、字符组,或是用()括起来的子表达式。一些常用的量词被定义成独立的元字符。
{m}表达式匹配m次如:“\d{3}”相当于“\d\d\d”“(abc){2}”相当于“abcabc”
{m,n}表达式匹配最少m次,最多n次如:“\d{2,3}”可以匹配“12”或“321”等2到3位的数字
{m,}表达...