正则表达式
1 .普通字符
字符 | 描述 | 示例 |
---|---|---|
[abc] | 匹配 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中所有的 h l o 字母 |
[^ABC] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母 |
[^a-z] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 a 到 z 的所有字母 |
[A-Z] | [A-Z] 表示一个区间,匹配所有的大写字母 | [A-Z] 匹配字符串 "Hello world" 结果为 H |
- [ a-d [ e-f ] ] a-d 或 e -f
2.特殊字符
字符 | 描述 | 示例 |
---|---|---|
. | 匹配任意单个字符,除了换行符 | a.b 、1.2 |
* | 匹配前一个字符零次或多次 | go*gle 、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle 、colou+r |
? | 匹配前一个字符零次或一次 | colou?r 、col(o)?r |
| | 表示“或”的意思,用于匹配多个选项中的一个 | apple|orange 、yes|no |
[] | 用于定义字符类,匹配方括号内的任意一个字符 | [aeiou] 、[0-9] |
() | 用于分组,可以改变默认的优先级和应用限定符 | (go)+ 、(abc|def) |
$ | 匹配输入字符串的结尾位置,如果设置了 RepExp 对象的 Multiline 属性,则 $ 也匹配‘\n’或‘\r’ | … |
{ | 标记限定表达式的开始 | … |
| | 指明两项直接的一个选择 | … |
3. 非打印字符
字符 | 描述 | 示例 |
---|---|---|
\n | 匹配换行符 | Hello\nWorld |
\r | 匹配回车符 | Hello\rWorld |
\t | 匹配制表符 | Hello\tWorld |
\v | 匹配垂直制表符 | Hello\vWorld |
\s | 匹配任意空白字符,包括空格、制表符、换页符等 | Hello World |
\S | 匹配任意非空白字符,不包括换行 | 我暂时不知道 |
\d | 匹配任意数字字符,相当于 [0-9] | 12345 、9am |
\w | 匹配任意字母、数字或下划线字符,相当于 [a-zA-Z0-9_] | hello_world_123 |
4. 限定符
字符 | 描述 | 示例 |
---|---|---|
* | 匹配前一个字符零次或多次 | go*gle 、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle 、colou+r |
? | 匹配前一个字符零次或一次 | colou?r 、col(o)?r |
{n} | 匹配前一个字符恰好出现 n 次 | go{2}gle 、colou{3}r |
{n,} | 匹配前一个字符至少出现 n 次 | go{2,}gle 、colou{3,}r |
{n,m} | 匹配前一个字符出现 n 到 m 次 | go{2,5}gle 、colou{3,7}r |
5. 定位符
字符 | 描述 | 示例 |
---|---|---|
^ | 匹配字符串的开头 | ^Hello 、^[A-Z] |
$ | 匹配字符串的结尾 | World$ 、[0-9]$ |
\b | 匹配单词的边界 | \btest\b 、\bword\b |
\B | 匹配非单词边界 | \Btest\B 、\Bword\B |
-
限定符
*
表示匹配前面的元素零次或多次,而+
表示匹配前面的元素一次或多次。当在这些限定符后面加上
?
时,表示进行非贪婪匹配,即尽可能少地匹配。例如,如果有一个字符串
abbb
,并且我们使用正则表达式ab*?
来匹配,那么它将匹配 “ab”,而不是整个字符串"abbb"
。因为*?
表示匹配前面的 “b” 零次或多次,但尽可能少地匹配。如果我们使用正则表达式
ab+?
来匹配同样的字符串,它将匹配"abb"
,而不是整个字符串"abbb"
。因为+?
表示匹配前面的 “b” 一次或多次,但尽可能少地匹配。 -
不能把限定符和定位符一起使用