import re
#使用编译的对象
content='awdw3224ddsfd32rf'
p=re.compile(r'\d+',re.I)#忽略大小写
rest=p.finall(content)#以列表的形式返回匹配到的字符串
rest1=p.match(content)#match()方法从字符串的开始位置与正则表达式匹配,如果开始就不匹配则返回None
rest2=p.search(content)#从开头一直找,如果开头不匹配,跳到下一个字符
#,匹配成功返回Matchobject对象,否则返回None
#不使用编译的对象
re.findall(r'\d+',content,re.I)
group与groups
import re
content = "hello world!"
p = re.compile(r'hello')
rest=p.search(content)
print(rest.group())#如果没有匹配到字符,则rest没有group属性,会报错
import re
content = "hello world hello!"
p = re.compile(r'(hello)( wo)')
rest=p.search(content)
print(rest)
print(rest.group(2))#返回分组的字符 输出 wo
import re
content = "hello world hello!"
p = re.compile(r'(hello)( wo)')
rest=p.search(content)
print(rest)
print(rest.groups())#输出('hello', ' wo')
import re
content = "hello world hello!"
p = re.compile(r'(?P<name>hello)( wo)')#python中正则表达式分组命名记得加P
rest=p.search(content)
print(rest)
print(rest.groupdict())
通过正则表达式对字符串进行分割
import re
s='1one2222two3three4four'
p=re.compile(r'\d+')
rest=p.split(s[,value])#value代表从开头计算的分割次数,不指定代表完全分割
print(rest)
#打印结果是['', 'one', 'two', 'three', 'four']
使用正则表达式进行字符串替换
import re
s='1one2222two3three4four'
p=re.compile(r'\d+')
rest=p.sub('@',s)
print(rest)
#@one@two@three@four
#sub( pattern, repl, string, max=0)方法,sub( )参数max表示子串替换的最大次数,而非替换从repl开始的字符个数
使用正则表达式进行字符串位置转换
import re
s = 'hello world'
p = re.compile(r'(\w+) (\w+)')
rest = p.sub(r'\2 \1', s)
print(rest)
利用正则表达式和函数对字符串替换并改写
import re
s = 'hello world'
def f(m):
return m.group(2).upper() + " " + m.group(1)
p = re.compile(r'(\w+) (\w+)')
rest = p.sub(f, s)
print(rest)
#WORLD hello