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='<a herf=http://www.baidu.com>hasghi</a>'
a=re.compile(pat).findall(string)
print(a)
——來自韋瑋老師課堂筆記及所悟