本文介绍正则表达式的基础知识及其在Python中的使用
正则表达式基础知识
30分钟学会正则表达式
以下是常见匹配字符的含义:
Python中re模块的使用
详细案例见:详细示例
示例1:
import re
key = r"<html><body><h1>hello world<h1></body></html>"#这段是你要匹配的文本
p1 = r"(?<=<h1>).+?(?=<h1>)"#这是我们写的正则表达式规则,你现在可以不理解啥意思
pattern1 = re.compile(p1)#我们在编译这段正则表达式
matcher1 = re.search(pattern1,key)#在源文本中搜索符合正则表达式的部分
print matcher1.group(0)#打印出来
输出:
hello world
示例2:
import re
key = r"saas and sas and saaas"
p1 = r"sa{1,2}s"
pattern1 = re.compile(p1)
print pattern1.findall(key)
输出:
['saas', 'sas']
示例3:
import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456
代码中字符串前面的r表示不转义
代码使用的一般流程:
1、re.compile(p) -> re.search(pattern,key),再用group(index)函数取值。
2、re.compile(p) -> findall(),直接返回匹配的列表。
3、re.search(p,key).group(index)。
注意:
group和groups是两个不同的函数。一般,m.group(N) 返回第N组括号匹配的字符。而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。
m.groups() 返回所有括号匹配的字符,以tuple格式。m.groups() == (m.group(0), m.group(1), …)