正则表达式 第五篇:C# 正则元字符
2021-01-28 03:15
标签:^c str pat 编号 一个 style 换行 顺序 前缀 本文整理C#正则表达式的元字符,正则表达式是由字符构成的表达式,每个字符代表一个规则,表达式中的字符分为两种类型:普通字符和元字符。普通字符是指字面含义不变的字符,按照完全匹配的方式匹配文本,而元字符具有特殊的含义,代表一类字符。 把文本看作是字符流,每个字符放在一个位置上,例如,正则表达式 “Room\d\d\d”,前面四个字符Room是普通字符,后面的字符\是转义字符,和后面的字符d组成一个元字符\d,表示该位置上有任意一个数字。 用正则表达式的语言来描述是:正则表达式 “Room\d\d\d”共捕获7个字符,表示“以Room开头、以三个数字结尾”的一类字符,我们把这一类字符称作一个模式(Pattern),也称作是一个正则。 转义字符是\,把普通字符转义为具有特殊含义的元字符,常用的转义字符有: 在进行正则匹配时,把输入文本看作是有顺序的字符流,字符类元字符匹配的对象是字符,并会捕获字符。所谓捕获字符是指,一个元字符捕获的字符,不会被其他元字符匹配,后续的元字符只能从剩下的文本中重新匹配。 常用的字符类元字符: 注意,转义字符也是字符,在进行正则匹配时,也会捕获字符。 定位符,根据字符串中的当前位置来判断匹配是否成功,定位符匹配的是位置、不会消耗字符,是零宽的(宽度为0)。 量词是指限定前面的一个正则出现的次数,量词分为两种模式,贪婪模式和懒惰模式,贪婪模式是指匹配尽可能多的字符,而懒惰模式是指匹配尽可能少的字符。默认情况下,量词是贪婪模式,在量词的后面加上?来启用懒惰模式。 注意,出现多次是指前面的元字符出现多次,例如,\d{2} 等价于 \d\d,只是出现两个数字,不要求两个数字是相同的。要表示相同的两个数字,必须使用分组来实现。 () 括号不仅确定表达式的范围,还创建分组,()内的表达式就是一个分组,引用分组表示两个分组匹配的文本是完全相同的。 (pattern) 所谓捕获字符是指:一个元字符捕获的字符,不会被其他元字符匹配,后续的元字符只能从剩下的文本中重新匹配。 1,分组编号和命名 默认情况下,每个分组自动分配一个组号,规则是:从左向右,按分组左括号的出现顺序进行编号,第一个分组的组号为1,第二个为2,以此类推。也可以为分组指定名称,例如,为分组指定名称的格式是: 通常来说,分组分为命名分组和编号分组,引用分组的方式有: 注意,分组只能后向引用,也就是说,从输入文本的左边开始,分组必须先定义,然后才能引用。 在正则表达式里引用分组的语法为“\number”,比如“\1”代表与分组1 匹配的子串,“\2”代表与分组2 匹配的字串,以此类推。 例如,对于 ".*?\1>" 可以匹配 2,分组构造器 分组构造方法如下: 3,贪婪分组 贪婪分组也称作非回溯分组,该分组禁用了回溯,正则表达式引擎将尽可能多地匹配输入文本中的字符。如果无法进行进一步的匹配,则不会回溯尝试进行其他模式匹配。 (?> pattern ) 零宽是指宽度为0,匹配的是位置,因为匹配的子串不会出现在匹配结果中,而断言是指判断的结果,只有断言为真,才算匹配成功。 对于定位符,可以匹配一句话的开始、结束(^ $)或者匹配一个单词的开始、结束(\b),这些元字符只匹配一个位置,指定这个位置满足一定的条件,而不是匹配某些字符,因此,它们被成为 零宽断言。所谓零宽,指的是它们不与任何字符相匹配,而匹配一个位置;所谓断言,指的是一个判断,正则表达式中只有当断言为真时才会继续进行匹配。零宽断言可以精确的匹配一个位置,而不仅仅是简单的指定句子或者单词。 正则表达式把文本看作从左向右的字符流,向右叫做后向(Look behind),向左叫做前向(Look ahead)。对于正则表达式,只有当匹配到指定的模式(Pattern)时,断言为True,叫做肯定式,把不匹配模式为True,叫做否定式。 按照匹配的方向和匹配的定性,把零宽断言分为四种类型: 1,前向肯定断言 前向肯定断言定义一个模式必须存在于文本的末尾(或右侧),但是该模式匹配的子串不会出现在匹配的结果中,前向断言通常出现在正则表达式的右侧,表示文本的右侧必须满足特定的模式: 使用前向肯定断言可以定一个模糊匹配,后缀必须包含特定的字符: 对正则表达式进行分析: 从分析中,可以得出,匹配该正则表达式的文本中必须包含 is 单词,is是一个单独的单词,不是某一个单词的一个部分。举个例子 Sunday is a weekend day 匹配该正则,匹配的值是Sunday,而The island has beautiful birds 不匹配该正则。 2,后向肯定断言 后向肯定断言定义一个模式必须存在于文本的开始(或左侧),但是该模式匹配的子串不会出现在匹配的结果中,后向断言通常出现在正则表达式的左侧,表示文本的左侧必须满足特定的模式: 使用后向肯定断言可以定一个模糊匹配,前缀必须包含特定的字符: 对正则表达式进行分析: 该正则表达式匹配的文本具备的模式是:文本以20开头、以两个数字结尾。 参考文档: C#中正则表达式的使用 C# 正则表达式 菜鸟教程 Regular Expression Language - Quick Reference 正则表达式 第五篇:C# 正则元字符 标签:^c str pat 编号 一个 style 换行 顺序 前缀 原文地址:https://www.cnblogs.com/ljhdo/p/11912171.html一,转义字符
二,字符类
三,定位符
四,量词、贪婪和懒惰
五,分组和捕获字符
(? name
>
pattern)
valid
,在引用分组时,分组对应的文本是完全相同的。
(? name
>
pattern):把匹配的子表达式捕获到命名的分组中
(?:pattern):非捕获的分组,并未分组分配一个组号
(?>
pattern):贪婪分组
六,零宽断言
(?=
pattern):前向、肯定断言
(?!
pattern):前向、否定断言
(? pattern
):后向、肯定断言
(? pattern
):后向、否定断言
(?=
subexpression )
\b\w+(?=\sis\b)
(?
(?2}\b