正则表达式概述
一种文本模式,描述在搜索文本时要匹配的一个或多个字符串
典型应用场景
数据验证,文本扫描,文本提取,文本替换,文本分割
语法
字面值(普通字符、需转义),元字符
匹配规则

正则表达式实例
import re
#匹配数字
text="Tom is 8 years old.Mike is 25 years old"
pattern_num=re.compile('\d+')
result_num=re.findall(pattern_num,text)
print(result_num)
#匹配含需转义的字符串
string="\\author:Tom"
pattern_string=re.compile(r'\\author')
result_string=re.findall(pattern_string,string)
print(result_string)
#匹配首字母大写的字符串
pattern_name=re.compile(r'[A-Z]\w+')
result_name=re.findall(pattern_name,text)
print(result_name)
#match 匹配(从开头匹配)
html='<html><head></head><body></body></html>'
html_position=' <html><head></head><body></body></html>'
pattern_html=re.compile(r'<html>')
result_html=re.match(pattern_html,html)
result_html_position=pattern_html.match(html_position,1)
print(result_html)
print(result_html_position)
#search匹配
result_html_position_search=pattern_html.search(html_position)
print(result_html_position_search)
#group编组
pattern_text_group=re.compile(r'(\d+).*?(\d+)')
result_text_group=re.search(pattern_text_group,text)
print(result_text_group)
print(result_text_group.group())
print(result_text_group.group(0))
print(result_text_group.group(1))
print(result_text_group.group(2))
print(result_text_group.start(1))
print(result_text_group.end(1))
print(result_text_group.groups())
print(re.search(r'(ab)+c','ababc'))
print(re.search(r'cent(er|re)','center'))
print(re.search(r'cent(er|re)','centre'))
print(re.search(r'(\w+) \1','hello hello world'))
text_dict="Tom:98"
pattern_dict=re.compile(r'(\w+):(\d+)')
result_dict=re.search(pattern_dict,text_dict)
print(result_dict.group())
pattern_dict_name=re.compile(r'(?P<name>\w+):(?P<score>\d+)')
result_dict_name=re.search(pattern_dict_name,text_dict)
print(result_dict_name.group('name'))
print(result_dict_name.group('score'))
正则应用 #字符串切割
celebrated_dictum='Beautiful is better than ugly.\nExplicit is better than implicit.\nSimple is better than complex'
celebrated_dictum_pattern=re.compile(r'\n')
result_celebrated_dictum=celebrated_dictum_pattern.split(celebrated_dictum)
print(result_celebrated_dictum)
print(re.split(r'\W','Good morning'))
#字符串替换
ords='ORD000\nORD001\nORD002'
print(re.sub(r'\d+','-',ords))
celebrated_dictum_sub='Beautiful is *better* than ugly.'
print(re.sub(r'\*(.*?)\*','<strong>\g<1></strong>',celebrated_dictum_sub))
#编译标记(re.M 匹配多行,re.S匹配所有字符包括\n)
mark_text='Python python PYTHON'
print(re.search(r'python',mark_text))
print(re.findall(r'python',mark_text,re.I))
浙公网安备 33010602011771号