Python-正则表达式

 

import re

#匹配通用字符
#\w 任意字母/数字/下划线
#\W 和小写w相反
#\d 十进制数字
#\D 除了十进制数以外的值
#\s 空白字符
#\S 非空白字符

#匹配数字.英文.中文
#数字[0-9]
#英文[a-z][A-Z]
#中文[\u4e00-\u9fa5]

#元字符
# . 匹配任意字符 \n除外
# ^ 匹配字符串开始位置
# $ 匹配字符串中结束的位置
# * 重复o,1,n次前面的原子
# ? 重复0,1次前面的原子
# + 重复1,n次前面的原子

#匹配固定次数
#{n}以前的原子出现n次
#{n,}至少出现n次
#{n,m}出现次数介于n-m之间


#多个表达式 |  连接2个正则表达式或用算

#strr="15011143537"
#strs="023-110120"
#pat=re.compile(r"^1\d{10}$|^\d{3}-\d{6}$",re.I)
#print(pat.findall(strs))


#分组

#strr="111<div>test1</div>222<div>test2</div>333"
#pat=re.compile(r"<div>(.*?)</div>",re.I)
#print(pat.findall(strr))



#贪婪模式和非贪婪模式
#贪婪模式:在整个表达式匹配的前提下,尽可能多的匹配
#非贪婪模式:在整个表达式匹配的前提下,尽可能少的匹配?
#python默认是贪婪模式


#compile()  --将正则表达式转换为内部格式,提高执行效率
#match和search函数
#match--匹配开头
#search--匹配任意位置
#都只匹配一次

#strr="111<div>test1</div>222<div>test2</div>333"
#pat=re.compile(r"<div>(.*?)</div>",re.I)
##加上问号不贪婪,这结果为['test1', 'test2']不加贪婪模式为['test1</div>222<div>test2']
#print(pat.findall(strr))


#findall()   查找所有匹配的内容,装到列表中
#finditer()   查找所有匹配的内容,装到迭代器中


#str="aaa-----jinwei------------jinwei---bbbb"
#pat=re.compile(r"jinwei",re.I)
#print(pat.findall(str))


#str="aaa-----jinwei------------jinwei---bbbb"
#pat=re.compile(r"jinwei",re.I)
#data=pat.finditer(str)

#for i in data:
#    print(i.group())



#split()   按照能匹配的子字符串分割后返回列表
#sub()     用于替换

#strr="jinwei1,,,jinwei2,,,jinwei3,,,"

#pat=re.compile(r",,,",re.I)
#print(pat.split(strr))

#strr="jinwei1,,,jinwei2,,,,,,jinwei3,,,"
#pat=re.compile(r",,,",re.I)
#print(pat.sub("---",strr))

 

posted @ 2019-11-08 16:44  JinweiChang  阅读(156)  评论(0编辑  收藏  举报