1、原子
import re
#普通字符作为原子
pat='yu' #2个原子
string='http://yun.iqianyue.com'
a=re.search(pat,string)
print(a)
#非打印字符作为原子
pat='\n'
string='''kalsjflak
aksfjlk'''
a=re.search(pat,string)
#通用字符作为原子 \w可代表任意字母、数字、下划线 \W匹配任意除了\w
# \d任意十进制数 0-9整数
# \s任意空白字符 \S除\s之外的任意字符
pat='\w\dpython\w'
string='ajskfh_7python3skd'
a=re.search(pat,string)
#原子表——[abc] 只包含a b c中的一位
pat='abc[abc]l'
string='asfdaflabcblabc'
d=re.search(pat,string)
2、元字符
# .可匹配任意字符(换行符除外)
# ^匹配字符串开始位置
# $匹配结束位置
# *匹配0、1、多次前面的字符 's*'可匹配s ss sss
# ?匹配0、1前面的字符 s ss
# +匹配1、多次前面的字符 ss sss
# {n} 前面的原子出现n次 t{6} 表示tttttt
# {n,}前面的原子至少出现n次
# {n,m}前面的原子至少出现n次,至多出现m次
# | 或 t|s
# ()表示要提取的内容
3、模式修正符
# I 忽视大小写
# M多行匹配
# L本地化识别匹配
# U根据Unicode解析
# S使.可匹配换行符pat='python'
string='ajshfjdskaghlPythonshfjh'
a=re.search(pat,string,re.I)
print(a)
#贪婪模式(多匹配)与懒惰模式(少匹配)
pat1='p.*y'
pat2='p.*?y'
string='abcdajsdpythonjkashfpy'
a=re.search(pat1,string)
print(a)
b=re.search(pat2,string)
print(b) #只匹配第一个py
4、正则表达式函数
# re.match 从头开始匹配(pat中的第一个元素必须对应string中的第一个元素)
# re.search
# re.sub 替换
pat='[a-zA-Z]+://[^\s]*[.com|.cn]'
string='hasghi'
a=re.compile(pat).findall(string)
print(a)