正则佐料『元字符』
标签: 元字符
[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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。