正则佐料『元字符』

标签: 元字符


[TOC]

所谓的元字符,即为特殊字符,表示有特殊的含义,要学好正则表达式,首先就得掌握好元字符。

^ 元字符

^表示匹配字符串的开头位置,也就是说,它匹配的是一个位置。如果要匹配^字符本身的话,需要转义,即\^。接下来我们便来举例说明:
在这里插入图片描述
如上图所示,当在正则表达式输入框中输入^的时候,会匹配到每行字符串开头的那个位置(红色竖线)。
^在集合[]里面的不同位置可能表示不同的含义,比如[^a]表示匹配除了小写字母a之外的任意一个字符,而[a^]表示匹配a^中的其中一个字符。如下图所示:

^放在[]里面的第一个位置的时候,它表示的意思[^a-z],即排除a到z之间的所有小写字母的意思;放在[]里面的其他位置,则没有特殊含义[a-z^0-9]

$元字符

$表示匹配字符串的结尾位置,它跟^一样都是匹配位置,只是^匹配的是开头的位置,而$匹配的是结尾的位置。如果只是想匹配$字符,则需要转义,即\$

[ 元字符

[表示一个字符集的开始,需要配合]来使用,比如[a-z]表示匹配26个小写字母的一个集合,可以匹配任意一个小写字母。
在这里插入图片描述

() 元字符

左右两个小括号是两个元字符,但 ( ) 必须在一起成对使用才可以,它表示一个子表达式,即一个分组,一般表示捕获组。比如([0-9])表示匹配0到9之间的任意一个数字,且会把匹配到的这个数字保存到捕获组1中,以便于后面引用或取值。
在正则表达式中,你不能单独写左括号或右括号,必须成对出现才是正确的,否则会报错。但如果你把()这两个元字符转义成普通的字符,就无所谓了,例如\(或者\)
在这里插入图片描述

{ 元字符

{表示限定符,是用来表示量词的,它一般情况下必须和}成对配合使用,不然会报错。例如[0-9]{2}表示一次匹配两个连在一起的数字,而[0-9]{1,2}表示匹配一次可以匹配1个数字或者两个数字。

提示:{0,}*等价,{1,}+等价,{0,1}?等价。后面说到量词的相关知识时,会举例说明。

在这里插入图片描述

+ 元字符

+表示匹配它前面的子表达式一次及以上。例如,[0-9]+表示它左边的子表达式[0-9]需要至少匹配一次,而([0-9]{2})+表示它左边的子表达式([0-9]{2})必须匹配一次及以上,也就是说,它需要匹配长度为偶数的数字字符串。
在这里插入图片描述

* 元字符

*表示匹配它左边的子表达式0次或多次。这样一来,它就有可能匹配到空字符串,也就是匹配到字符之间的间隙,即字符和字符之间的那个位置。
在这里插入图片描述

? 元字符

?表示它左边的子表达式可以出现0次或1次。例如,[a-z][0-9]?表示一个小写字母,后接一个数字0次或1次,也可以写成[a-z][0-9]{0,1}
在这里插入图片描述

. 元字符

. 一般情况下能匹配除了换行符之外的其他字符,在某些情况下,可以匹配所有字符。
在这里插入图片描述

元字符

\表示转义字符,它可以把一个普通字符转义成特殊字符,也可以把一个特殊字符转义为普通字符。例如,d表示小写字母d,但\d表示数字0到9的集合,即[0-9]\s\w等等也类似。如果要表示\,需要写成\\
在这里插入图片描述

| 元字符

竖线|表示或者的关系,表示可选的分支。例如,[1-3]可表示为(1|2|3)he(ll|r)0可以同时匹配hello和hero
在这里插入图片描述

- 连接符

虽然连接符-不是元字符,但当它放在[]集合里面的时候,有可能会影响整个字符集的元素范围。例如,[1-3]表示匹配1或2或3,但[-13]表示匹配-或1或3,特别是对字符之间的范围不太肯定的时候,如果只是要匹配-,那么当它在[]里面的时候,最好转义一下,[\-]

-放在集合[]里面,且是放在两个字符之间,例如[a-z][1-3]这种的话,它是表示一个集合范围;而当-前面和后面没有字符的时候,它就表示它本身。如果-没有在[]里面,则它没有特殊含义。当要表示-本身的时候,若-是在[]里面,最好是放在集合的开始位置[-a-z]、否则最好转义一下[a-z\-]

在这里插入图片描述


本次内容相对比较简单,只是做个简单的介绍,后面会针对某个知识点做更详细的介绍,希望对你有帮助。

微信公众号:Cooking Regex
在这里插入图片描述


老鼠拧刀满街找猫
2.6k 声望1.4k 粉丝

java攻城狮