正则表达式学习记录(Python)
一、特殊符号和字符
- 多个正则表达式匹配 ( | )
用来分隔不同的匹配模式,相当于逻辑或,可以符合其中任何一个正则表达式
at | home # 表示匹配at或者home
bat | bet | bit # 表示匹配bat或者bet或者bit
- 匹配任意的单个字符 ( . )
点号用来匹配除了换行符\n 之外的任意一个字符 如果想要匹配该符号需要添加转移符 \.
f.o # 表示匹配任意一个以f开头o结尾的字符,fo中间可以是任何字符,例如f9o, fxo,f#o等
.. # 表示匹配任意的两个字符,例如12, as,#2等
.end # 表示匹配end前面有一个任意字符的字符串,例如1end,kend, #end等
- 匹配字符串开头(^)
放在匹配的字符前面,表示匹配以该字符开头的字符串
^From # 表示匹配任意一个以From开头字符串,例如:From1,From##,From等
- 匹配字符串结尾($)
放在匹配的字符后面,表示匹配以该字符结尾的字符串
From$ # 表示匹配任意一个以From结尾字符串,例如:11From,##From,From等
- 单词边界匹配(/b 和 /B)
根据符合所在的位置,放在前面则匹配开头,放在后面则匹配结尾
\bstay # 匹配以stay开头的字符串
stay\b # 匹配以saty结尾的字符串
\bstay\b # 匹配以stay开头并且结尾也是stay的字符串,即单词stay
\Bstay # 匹配包含saty但是不以stay开头的字符串
- 字符集匹配([ ])
根据集合里的内容,进行指定字符的匹配,每个字符集表示一个字符,可以是字符集里任意一个字符
b[abc]t # 匹配以b开头t结尾并且中间字符为a或b或c的字符串,例如bat,bbt,bct
[123][abc][!@#] # 匹配一个三字符的字符串,字符串的内容为方括号内内容,例如1a#, 3a@, 2c!等
- 字符集范围匹配([a-z]、[A-Z]、[0-9])范围通过 - 连接
根据字符集中的范围进行字符匹配,匹配内容为符合字符集范围的字符
a[0-9] # 匹配一个以a开头并且后面为0-9的字符串,例如:a6,a8,a0
[r-u][3-5] # 匹配一个以r或s或t或u开头,并且以3或4或5结尾的字符串,例如r4,t3,u5
- 字符集否定匹配([^])
脱字符放在左括号旁边,表示不匹配字符集中的任何元素
[^0-9] # 不匹配数字
[^a-z] # 不匹配小写字符a-z
- 多次匹配(*+?{N})
*表示字符匹配0次或者多次出现的表达式
+表示字符匹配1次或者多次出现的表达式
? 表示匹配0次或者1次出现的表达式
{N}表示匹配N次出现的表达式
{N,M}表示匹配N-M次的表达式
do* # d后面跟0个o或者多个o,例如d,do,dooo
do? # d后面跟0个o或者1个o,例如d, do
do+ # d后面跟1个o或者多个o,例如do, dooo
do{3} # d后面跟三个o,dooo
do{3,6} # d后面跟3-6个o,例如dooo,doooo,dooooo
- 特殊字符集
特殊匹配的字符集的集合,使正则表达式编写起来更加简洁
\w # 匹配全部字母数字的字符集,相当于[a-zA-Z0-9]
\s # 匹配空格字符
\d # 匹配十进制数,相当于[0-9]
\D # 匹配任何非十进制数 ,相当于[^0-9]