Bootstrap

正则表达式的关键——Pattern匹配规则全解

专栏目录​​​​​​https://blog.csdn.net/weixin_44182128/article/details/122654522)


上一节:正则表达式基本介绍https://blog.csdn.net/weixin_44182128/article/details/122675018


创作不易,太需要小伙伴们的收藏点赞推荐了!

如果对您有所帮助,请收藏推荐不迷路,关注我学习更多的内容!

转载请注明出处谢谢!


目录

一、正则表达式Regex的属性选择RegexOptions 

二、Pattern匹配规则

1.常用的元字符

2、定位符

          3、分组:用英文状态下的()进行分组

4、多项匹配

             (1)单个字符多项选择

             (2)多个字符多项选择,需要加“()”分组

          5、预查

6.反向引用

 (1)连续的反向引用

 (2)包括连续与不连续的反向引用

7、排除特定字符

(1)不排除中间出现字母o的结果

(2)排除中间出现字母o的结果 

(3)排除中间出现特定单词字符串的匹配

三、贪婪模式与非贪婪模式

贪婪模式

非贪婪模式

四、正则表达式测试工具资源

五、参考

六、下节预告


三、贪婪模式与非贪婪模式

        贪婪模式

        非贪婪模式

四、正则表达式测试工具资源

五、参考

六、下节预告



一、正则表达式Regex的属性选择RegexOptions 

IgnoreCase指定不区分大小写的匹配。
Multiline多行模式。 更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
Singleline指定单行模式。 更改点 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
Compiled指定将正则表达式编译为程序集。 这会产生更快的执行速度,但会增加启动时间。
CultureInvariant指定忽略语言中的文化区域性差异。
ECMAScript为表达式启用符合 ECMAScript 的行为。 该值只能与 IgnoreCaseMultiline 和 Compiled 值一起使用。 该值与其他任何值一起使用均将导致异常。
ExplicitCapture定唯一有效的捕获是显式命名或编号的 (?<name>...) 形式的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。
RightToLeft指定搜索从右向左而不是从左向右进行。
IgnorePatternWhitespace消除模式中的非转义空白并启用由 # 标记的注释。 但是,此值不影响或消除标记单独的正则表达式语言元素的开头的字符类、数值量词或标记的空格。
None指定不设置任何选项。

例子:

匹配input内连续3个连续数字,多行查找,设置成程序集

Dim input as string="dsffsfv12343434ffssf456fdsfvv"
dim pattern as string="\d{3}"
Dim reg1 As New Regex(pattern,  RegexOptions.Compiled Or RegexOptions.Multiline)
Dim matches As MatchCollection = reg1.Matches(input)

二、Pattern匹配规则

1.常用的元字符

元字符是正则表达式最核心和基本的概念,表示正则表达式“通配”概念,构造表达式的基本符号。

 

 多行模式下,匹配一个正整数,[1-9]设置第一个数字不是 0,[0-9]* 表示任意多个数字

[1-9][0-9]*


2、定位符


 3、分组:用英文状态下的()进行分组

搜索数字字母组合match,数字分成一组match.groups(1),字母分成一组match.groups(2)

(\d+)([a-zA-Z]+)

4、多项匹配

(1)单个字符多项选择

(2)多个字符多项选择,需要加“()”分组

 多行模式下,匹配每段以【.png】、【.gif】、【.jpeg】结尾的行

.+\.(gif|jpeg|png)


5、预查

 查找所有以【字母开头】,【字母结尾】,【中间是数字】的match结果,首尾标志不进入match结果

(?<=[a-zA-Z])[0-9]+(?=[a-zA-Z])


6.反向引用

(1)连续的反向引用

搜索文本中连续重复出现2次的单词

([a-z]+) \1

 (2)包括连续与不连续的反向引用

非贪婪搜索,重复出现的2个字母之间的内容,包括重复的内容


7、排除特定字符

(1)不排除中间出现字母o的结果

(2)排除中间出现字母o的结果 


2022.2.6补充:

(3)排除中间出现特定单词字符串的匹配

^(?!.*(big|great)).+?

解释:

1、正向查询查不到,需要选择多行multiline和righttoleft

【这里可能编程语言区别,.net需要选择righttoleft,如果有知道问题的小伙伴可在评论区交流】

2、(?!.*(big|great)) 表示查找不是big和great的字符

      .* 表示big和great前面的字符

      后面加上.+?表示非贪婪搜索行

3、^ 标记从行首开始,而不是行中搜索


三、贪婪模式与非贪婪模式

正则表达式一般是遵循尽可能多的匹配结果,如果要想尽可能少的匹配结果增强match准确性,需要在表达式的次数符后面加上【?】号,表示非贪婪模式

贪婪模式

非贪婪模式

四、正则表达式测试工具资源

正则表达式测试工具下载链接https://download.csdn.net/download/weixin_44182128/79473192

五、参考

 1、Microsoft .NET Api 浏览器

2、正则表达式 – 教程 | 菜鸟教程

六、下节预告

3、常用的正则表达式大全icon-default.png?t=M0H8https://blog.csdn.net/weixin_44182128/article/details/122799857

创作不易,太需要小伙伴们的收藏点赞推荐了!

如果对您有所帮助,请收藏推荐不迷路,关注我学习更多的内容!

转载请注明出处谢谢!

;