正则条件概念的应用 正则表达式语法

序正则表达式,也称为Regex,是文本处理领域中一个非常常见的概念。这种概念方法在各种应用领域和编程语言中都有很大的应用价值,是每个程序员都应该熟悉的字符串过滤技巧。在学

本文最后更新时间:  2023-04-21 19:13:37

正则表达式,也称为Regex,是文本处理领域中一个非常常见的概念。这种概念方法在各种应用领域和编程语言中都有很大的应用价值,是每个程序员都应该熟悉的字符串过滤技巧。

在学习正则表达式的过程中,相信很多朋友都有这样的烦恼:网上没有系统的正则表达式学习资料。

今天老k为大家整理了一篇文章,详细介绍了正则表达式的各种概念。

我们先来看看:

正则表达式也称为Regexr,可以使用普通字符(a~z 26个英文字母)和特殊字符(元字符)的组合来表示一些特定的字符模式。

作为示例文本,开始介绍。


1.[字符类]匹配

通过.可以匹配除换行符以外的所有字符,例如:

表示所有字符:

/./g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。通过w、d、s分别用来匹配罗马字符、数字、空格,例:

表示所有罗马字符

/w/g

匹配结果

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

表示所有数字:

/d/g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

表示所有空格:

/s/g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

3.用于匹配非罗马字符、非数字和非空大小写的字符串,例如:

表示所有非罗马字符:

/W/g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

表示所有非数字:

/D/g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

表示所有非空格:

/s/g

匹配结果:

正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

4.通过[abc]设置集合以匹配集合中的字符,例如:
表示”general/general/character/symbol ”任意字符:
/[普通字符]/g
匹配结果:
正则表达式也叫Regexr,可以使用普通字符(a~z 26个英文字母)和特殊字符(元字符)。

5.用[ABC]设置集合的反转,以匹配不在集合中的字符,例如:
表示不在”一般/一般/和/特殊/特殊/性格/性格”
/[普通和特殊字符]/g
结果:
正则表达式也叫R e g e x r,可以使用普通字符(a ~ z 2 6英文首字母)。

6.用[a-g]表示区间,选择A到G的字符,例如:
表示A到G的字符:
/[A-G]/G
结果:


二。【主播类】匹配

用^abc表示匹配字符串起始位置的字符,例:

表示在字符串开头的“正则”二字:


/^正则/g

匹配结果:


正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

说明:


如果用/^普通/g去匹配就会匹配失败,因为“普通”两字不在字符串开头用abc$表示匹配字符串结尾位置的字符,例:

表示在字符串结尾的”字符模式。”:


/字符模式。$/g

匹配结果:


正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

说明:


如果”字符模式。”这几个字符不在字符串结尾,则会匹配失败。这里尤其需要注意,如果语句结尾有换行符,则字符串是以换行符结尾,需要加入n才行用b表示单词边界和B非单词边界,此处的单词边界以空格或换行符作为判断逻辑,例:

用b表示在单词边界的数字:


/bd/g

匹配结果:


正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

说明:


匹配文本里有2个数字,但由于6不在单词边界空格后面,所以没有匹配6而匹配到了2

用B表示不在单词边界的数字:


/Bd/g

匹配结果:


正则表达式又称Regexr,可以用普通字符(a~z 26个英文字母)和特殊字符(元字符)组合表示某些特定字符模式。

说明:


匹配文本里有2个数字,但由于2在单词边界空格后面,所以没有匹配2而匹配到了6


三。转义字符

由于匹配的需要,经常使用+字符的一些组合来表达特殊的意思而不是字符本身的意思。这种表示被称为转义字符,因为它转换了字符本身的含义。

转义特殊字符:

.:由于.在正则中表示所有字符,所以用.表示字符”.”本身;*:由于*在正则中表示数量词,所以用*表示字符”*”本身;\:由于在正则中表示转义模式,所以用\表示字符””本身;

2.

字母转义字符:

t:此处用t表示制表空格,而非字符”t”;n:此处用n表示换行符,而非字符”n”;r:此处用r表示退格键操作,而非字符”r”;


四。字符组

有时候需要根据条件检索特定的字符,比如在一封邮件中查找一个用户名,那么就需要先从有规律的文本中找到邮件的字段,然后在邮件的字段中找到用户名,这样会让简单的工作变得复杂。
字符组使这项工作更加容易。这里,我们使用:

哈哈哈阿哈哈哈!

例如,理解字符组的使用:

用圆括号表示字符组,如(abc),见下例:

/(ha)+/g

匹配结果:


hahaha haa hah!用1表示正则表达式里的第一个字符组,2表示正则表达式里第二个字符组,3、4依次类推:
(w)a1

匹配结果:


hah dad bad dab gag gab

说明:


此例中,当(w)匹配的结果为字符h,则1就表示h。1的匹配结果需要参考第一个字符组,即(w)的结果。


动词 (verb的缩写)邻近判断

匹配示例:

1pt 2px 3em 4px

1.可以用(?=ABC)、(?!ABC)表达式,意为前瞻性判断:

正向前瞻判断,示例如下:

表示在字符”px”前的数字:


/d(?=px)/g

匹配结果:


1pt 2px 3em 4px

说明:


此处的(?=px)表示一个占位符,而非具体的字符负向前瞻判断,示例如下:

表示不在字符”px”前的数字


/d(?!px)/g

匹配结果:


1pt 2px 3em 4px

说明:


此处的(?!px)表示一个占位符,而非具体的字符

2.可以用(?& lt=ABC)、(?& lt!ABC)表达,意思是追溯判断:

正向回顾判断,示例如下:

表示在字符”p”后的罗马字符:


/(?<=p)w/g

匹配结果:


1pt 2px 3em 4px负向回顾判断,示例如下:

表示不在字符”p”后的罗马字符:


/(?<!p)w/g

匹配结果:


1pt 2px 3em 4px


不及物动词量词

匹配示例:

be bee beer beers beeeee

用数字表示的数量词:

{n}表示匹配n个字符:


/e{2}/g

匹配结果:


b be bee beer beers beeeee

{n,}表示匹配n个以上字符:


/e{2,}/g

匹配结果:


b be bee beer beers beeeee

{n,m}表示匹配n到m个字符


/e{2,3}/g

匹配结果:


b be bee beer beers beee ee

2.使用特殊符号*、+、?量词用于:

*表示0个或多个字符:


/e*/g

匹配结果:


b be bee beer beers beeeee

+表示1个或多个字符:


/e+/g

匹配结果


b be bee beer beers beeeee

?表示0个或1个字符:


/b?/g

匹配结果:


b be bee beer beers beeeee关于*和+差别的说明:
有些小伙伴可能会困惑在匹配时*和+都是匹配多个,但匹配0个和1个的差别是什么?有这个问题的小伙伴可以看下例是如何匹配字符串abc:
/a.*bc/g能匹配上述字符串;
/a.+bc/g不能匹配上述字符串,因为这个表达式不允许a和b没有字符;


七。贪婪模式

.+表示用贪婪模式进行匹配:


/bw+/g

匹配结果:


b be bee beer beers beeeee

.+?表示用非贪婪模式(懒惰模式)进行匹配


/bw+?/g

匹配结果:


b be bee beer beers beeeee贪婪模式和懒惰模式:

贪婪模式

就是在满足表达式的前提下,匹配尽可能多的字符;

懒惰模式

,又称

非贪婪模式,表示在满足表达式的前提下,匹配尽可能少的字符。


摘要

正则表达式是一项非常实用的技术,是每个程序员都应该掌握的技能。
老k把所有知识点总结成一张图表:

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。