1、字符位置
可以根据文本的位置来进行定位。比如要搜索某个单词,但前提是该单词是一行中的第一个。或者可能只想查找某个字母系列,但前提是它们出现在单词的末尾。
字符 | 含义 | 例子 | 例子说明 |
---|---|---|---|
^ |
行首 | ^abc |
只匹配行首的abc |
$ |
行末 | xyz$ |
只匹配行末的xyz |
\\b |
单词边界 | ing\\b |
只匹配单词末尾的ing |
\\B |
非单词边界 | \\Bing |
只匹配不出在单词开头的ing |
\\< |
单词开头 | \\<is |
仅在单词开头时匹配is |
\\> |
单词末尾 | on\\> |
仅在单词末尾匹配on |
2、字符类别
搜索文本时,仅根据字符分类来选择字符会很有用。字符的基本类别是数字和字母和其他字符(例如空格和标点符号)。
字符 | 含义 | 例子 | 例子说明 |
---|---|---|---|
. |
匹配除换行符以外的任何单个字符 | ab.def |
可以匹配如 abcdef, ab9def, ab=def 等 |
\\s |
匹配空白字符(例如空格,制表符等) | abcd\\se |
匹配 abcd e 和 abcd(tab)e |
\\S |
匹配非空白字符 | \\S\\S\\s\\S |
可以匹配如 AB D, 12(tab)3 等 |
\\w |
匹配单个字母,数字或下划线。等价于[a-zA-Z0-9_] | \\w\\{1,\\}-\\w\\{1,} |
可以匹配如 well-wishes, far-fetched 等 |
\\W |
\w 的取反,可以表示为 [^\w] | \\w\\W\\w |
可以匹配如 a@b,5-3 等 |
\\d |
匹配数字字符 0-9 | \\d\\d |
匹配所有两位数字 |
\\D |
匹配非数字字符 | \\D\\d |
匹配 s0, ^4 等 |
3、字符数量
匹配字符的数量,例如可以精确匹配六个空格,或定位长度在四到八位之间的数字字符串。
含义 | 例子 | 例子说明 | 例子说明 |
---|---|---|---|
零个或多个字符 | do*g | 匹配 dg, dog, doog 等,o 的数量为任意个 | 匹配 dg, dog, doog 等,o 的数量为任意个 |
匹配 m 个字符 | a{3} | 只能匹配 aaa | 只能匹配 aaa |
字符个数不少于 m个,但不超过n个 | 字符个数不少于 m个,但不超过n个,优先匹配 n 次 | 只能匹配 b, bb, bbb | 只能匹配 b, bb, bbb |
至少出现 m 次 | 至少出现 m 次 | c{2,} | 匹配 cc, ccc, cccc 等 |
| 匹配0次或1次,优先匹配1次 | cd? | 只能匹配 c, cd | | + | 匹配1-n次,优先匹配n次 | sd+ | 匹配 sd, sdd, sddd 等 |
4、字符集和字符范围
字符集是符合搜索条件的字符的列表,通过将一组字符括在方括号([和])中来指示字符集。
字符范围是字符集的一种,它在字符之间使用 - 来暗示它们之间的整个字符范围,以及开始和结束字符本身。
字符 | 含义 | 例子 | 例子说明 |
---|---|---|---|
[characters] |
匹配括号内列出的字符 | [abcd] |
可以匹配 a,b,c,d 单个字符 |
[^characters] |
匹配括号内未列出的字符 | [^abcd] |
a,b,c,d 除外的任意单个字符 |
[character-character] |
两个字符之间范围内的任何字符(包括这些字符) | [a-z] |
匹配任意小写字符 |
字符范围可以进行拼接,比如 [a-zA-Z0-9_]
就是匹配任意单个字母或数字。
字符范围也可以使用数量字符,比如 [a-z]*
就可以匹配 hello, world 这样的单词。
如果想匹配正则表达式中的特殊字符,比如 \
, ^
, *
, {
, [
等,因为它们有特殊含义,所以需要另外加 \
来表示,比如 \*
表示 *
,\\
表示 \
。