- 中文维基百科:
https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
Python说明文档:
https://docs.python.org/2.7/library/re.html ^
:匹配行首
$
:匹配行末尾
.
:匹配任意字符
\s
:匹配空白字符(空格、TAB和回车)
\S
:匹配任意非空白字符
*
:匹配前面的子表达式零次或多次
*?
:匹配前面的子表达式零次或多次。(非贪婪模式^1)
+
:匹配前面的子表达式一次或多次
+?
:匹配前面的子表达式一次或多次。(非贪婪模式)
[aeiou]
:匹配所包含的任意一个字符
[^XYZ]
:匹配未列出的任意一个字符
[a-z0-9]
:匹配指定范围内的任意字符序列
[^A-Za-z]
:第一个字符是^,它表示反向逻辑。这里匹配除了大小写字符之外的其他任意字符
(RegExp)
:获取括号内的字符串
例1:^X.*:
,匹配:
例2:X-Sieve: CMU Sieve 2.3 X-DSPAM-Result: Innocent X-Plane is behind schedule: two weeks
^X-\S+:
,匹配:
例3:X-Sieve: CMU Sieve 2.3 X-DSPAM-Result: Innocent
[0-9]+
,匹配:2,19,42- 正则表达式库在使用之前必须先导入到程序中:
import re
re.search(RegExp,str)
:判断字符串是否匹配正则表达式,返回True
或者False
(类似函数find()
)。例如:1
2
3# 判断字符串“line”是否以“From:”开头
if re.search('^From:',line): # 等价于line.startwith('From:')
...re.findall(RegExp,str)
:通过正则表达式的匹配,抽取所有符合的子字符串,返回字符串列表。(RegExp)
:获取括号内的字符串。例如:1
2
3
4
5x = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
y = re.findall('^From (\S+@\S+)',x)
print y # 打印出“['stephen.marquard@uct.ac.za']”
z = re.findall('@([^ ]*)',x)
print z # 打印出“['uct.ac.za']”- 转义字符:
\
。例如:# 在这个例子中由于$符号之前有一个反斜杠,它实际上匹配的是美元符号本身, 不是匹配一行的结尾 # 正则表达式的其他部分匹配一个或多个数字和句点 # 注意,方括号内,字符没有特殊性。 # 因此,[0-9.]实际表示数字和句点。方括号之外,句点是一个通配符,匹配任意字符。在方括号之内,句点就代表它本身。 import re x = 'We just received $10.00 for cookies.' y = re.findall('\$[0-9.]+',x) print y # 打印出“['$10.00']”