正则表达式

单个字符

[aeiou]			匹配所有的元音(aeiou)字符
[^aeiou]		匹配所有的非元音字符
[a-z]			匹配a~z中所有字符
.			匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
[\s\S]			匹配所有。\s 是匹配所有空白符,包括换行;\S 非空白符,不包括换行
\w			匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
\d			匹配数字。等价于[0-9]

元字符

\d                      匹配数字字符
\D                      匹配非数字字符
\w                      匹配单词字符(英文、数字、下划线); 等价于[A-Za-z0-9_]
\W                      匹配非单词字符
\s                      匹配空白符(包括换行符、Tab)
\S                      匹配非空白字符
.                       匹配任何单个字符,它只能出现在方括号以外, 只有一个不能匹配的字符,也就是换行符(\n)
\b    			\b标注字符的边界(全字匹配);例如\bword\b匹配单词word
^ 			匹配行首
$ 			匹配行尾

非打印字符

\f			匹配一个换页符。等价于 \x0c 和 \cL
\n			匹配一个换行符。等价于 \x0a 和 \cJ
\r			匹配一个回车符。等价于 \x0d 和 \cM
\s			匹配任何空白字符
\S			匹配任何非空白字符
\t			匹配一个制表符
\v			匹配一个垂直制表符

限定符

*			匹配前面的子表达式零次或多次。
				例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}

+			匹配前面的子表达式一次或多次。
				例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
				+ 等价于 {1,}

?			匹配前面的子表达式零次或一次。
				例如,"do(es)?" 可以匹配 "do"、"does" 中的 "does"、"doxy" 中的 "do" 。
				? 等价于 {0,1}

{n}			n 是一个非负整数。匹配确定的 n 次。
				例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配"food" 中的两个 o

{n,}			n 是一个非负整数。至少匹配n 次。
				例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配"foooood" 中 的所有 o
				'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'

{n,m}			m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
				例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。
				'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格

^ $符号

定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界
^ 匹配字符串开头
$ 匹配字符串结尾
e.g. ^bucket$ 匹配单词bucket

^符号,在[]之内和之外是不同的。在[]内表示反向选择,在[]外表示定位在行首。

通用规则

1.正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上 ?

2.贪婪/懒惰匹配
  <.+>  默认贪婪匹配“任意字符”
  <.+?> 懒惰匹配“任意字符”

3.或运算符
  (a|b)   匹配a或b
  (ab)|(cd)   匹配ab或cd

4.匹配字符串中的两个关键词:
    ^(?=.*word1)(?=.*word2).*$
posted @ 2022-10-05 12:16  逆行旅者  阅读(77)  评论(0)    收藏  举报