1. 关于元字符
1.1 概念
元字符 (Metacharacter):在正则表达式模式中具有特殊含义的字符,它与从字面意义上在模式中表示该字符
相对。
1.2 元字符总结
(1) ^(尖号) 匹配字符串的开头。请注意,尖号用在字符类的开头时表示符号反转而非字符串的开头。
(2) $(美元符号) 匹配字符串的结尾。设置 m
(multiline
) 标志后,$
还匹配换行 (/n
) 字符前面的位置。
(3) /
(反斜杠) 对特殊字符的特殊元字符含义进行转义。此外,如果要在正则表达式文本中使用正斜杠字符,
也要使用反斜杠字符,例如,/1//2/
匹配字符 1 后跟正斜杠字符和字符 2。
(4) .
(点) 匹配任意单个字符。只有设置 s
(dotall
) 标志时,点才匹配换行字符 (/n
)。
(5) *(星号) 匹配前面重复零次或多次的项目。
(6) +(加号) 匹配前面重复一次或多次的项目。
(7) (和) 在正则表达式中定义组。以下情况下使用组:
- 限制逻辑"或"字符 | 的范围:
/(a|b|c)d/
- 定义数量表示符的范围:
/(walla.){1,2}/
- 用在逆向引用中。例如,下面的正则表达式中的
/1
匹配模式的第一个括号组中的匹配内容:/(/w*) is repeated: /1/
(8)[和] 定义字符类,字符类定义单个字符可能的匹配:
/[aeiou]/
匹配所指定字符中的任意一个。
在字符类中,使用连字符 (-
) 指定字符的范围:
/[A-Z0-9]/
匹配从 A 到 Z 的大写字母或 0 到 9 的数字。
在字符类中,插入反斜杠对 ] 和 - 字符进行转义:
/[+/-]/d+/
匹配一个或多个数字前面的 +
或 -
。
在字符类中,以下字符(通常为元字符)被看作一般字符(非元字符),不需要反斜杠:
/[$£]/
匹配 $
或
£
。
(9) |(竖线) 用于逻辑"或"操作,匹配左侧或右侧的部分:
/abc|xyz/
匹配 abc
或 xyz
。
2.
关于元序列
元序列是在正则表达式模式中具有特殊含义的字符序列。下表说明了这些元序列:
元序列 | 描述 |
---|---|
和
| 指定前一项目的数值数量或数量范围:
有关详细信息,请参阅数量表示符。 |
| 匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单词字符,则也匹配字符串的开头或结尾。 |
| 匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。 |
| 匹配十进制数字。 |
| 匹配除数字以外的任何字符。 |
| 匹配换页符。 |
| 匹配换行符。 |
| 匹配回车符。 |
| 匹配任何空白字符(空格、制表符、换行符或回车符)。 |
| 匹配除空白字符以外的任何字符。 |
| 匹配制表符。 |
| 匹配字符代码由十六进制数字 nnnn 指定的 Unicode 字符。例如, |
| 匹配垂直换页符。 |
| 匹配单词字符( |
| 匹配除单词字符以外的任何字符。 |
| 匹配具有指定 ASCII 值(由十六进制数字 nn 定义)的字符。 |