字母、数字、汉字、下划线、以及后续没有特殊定义的标点符号,都是”普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。如:表达式 “a”,在匹配字符串 “abcde” 时,匹配到的内容是:“a”。
转义字符
一些不便书写的字符,采用在前面加 “\” 的方法。常见的如:
- \r: 回车
- \n: 换行符
- \t: 制表符
- \: “\” 本身
此外,还有其他再正则中有特殊用处的标点符号,在前面加 “\”后,代表该符号本身。如:^, “ 字符,需要写成 “\^” 和 “$”。如
- \^: 匹配^符号本身
- \$: 匹配$符号本身
- \.: 匹配小数点. 本身
其匹配规则和普通字符串是一样的,如“\^”匹配“a^bc”中的“^”。
‘多种字符’匹配
- \d:任意一个数字,0~9 中的任意一个
- \w:任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
- \s:包括空格、制表符、换页符等空白字符的其中任意一个
- .:小数点可以匹配除了换行符以外的任意一个字符
如:表达式 “\dtest\d”匹配”1test2”。
除了正则自带的“多种字符”匹配外,还可以通过中括号[]来自定义。
- 使用[ ]包含一系列字符,能够匹配其中任意一个字符。
- 用 [^ ]包含一系列字符,则能够匹配其中字符之外的任意一个字符。
如:[123]匹配 “1”或”2”或“3”;[^abc]匹配 “a”、”b”、”c” 之外的任意一个字符。
这里需要注意的是,在使用[]时,只有会改变字符组含义的才需要转义,
- 反斜线必须转义
- 方括号必须转义
- 「^」在首和「-」在中必须转义
其他情况即使是特殊字符也不需要转义,如:
- [aeiou]
- [$.*+?{}()|]
- [abc^123-]
匹配次数
“次数修饰”放在”被修饰的正则表达式”后边,可以匹配多次。如:
- {n}: 表达式重复n次,比如:“\d{2}” 相当于 “\d\d”。
- {m,n}:表达式至少重复m次,最多重复n次,比如:“a{1,3}”可以匹配 “a”或”aa”或”aaa”。
- {m,}: 表达式至少重复m次,比如:“\d{2,}”可以匹配 “12”,“123”,“12345678”。
- ?: 匹配表达式0次或者1次,相当于 {0,1},比如:“a[b]?”可以匹配”a”,“ab”。
- +: 表达式至少出现1次,相当于 {1,},比如:“a+”可以匹配”a”,“aa”,“aaa”。
- *: 表达式不出现或出现任意次,相当于 {0,},比如:”ab“可以匹配 “a”、”ab”、”abb”。
特殊符号
- ^: 与字符串开始的地方匹配,不匹配任何字符,这里如果使用(?m)模式,则匹配每一行的开始。如:“^aaa”无法匹配 “xxxaaaxxx”,可以匹配”aaaxxx”。
- $: 与字符串结束的地方匹配,不匹配任何字符,这里如果使用(?m)模式,则匹配每一行的结束。如:“aaa$”无法匹配“xxxaaaxxx”, 可以匹配“xxxaaa”。
- \b:匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符。它与 “^”、”$“ 类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是 “\w” 范围,另一边是 非“\w” 的范围。。如:“.\b.”匹配“@@abc”的“@a”。