Python的正则表达式

目录

 

# 正则表达式

#普通字符作为原子

#非打印字符作为原子

# 通用字符作为原子(作用非常大)

# 原子表(几个原子组成一个)

# 元字符

# 模式修正符

# 贪婪模式和懒惰模式

# 正则表达式函数

#示例:匹配.com和.cn网址​​​​​

#示例:匹配电话号码


# 正则表达式

 

import re
str ="weidongliang"


#普通字符作为原子

pat ="wei"
rsr=re.search(pat,str)
print(rsr)


#非打印字符作为原子


#\n:换行符   \t:制表符

str ='''baidusdfs
baidu
'''
pat="\n"
rest=re.search(pat,str)
print(rest)


# 通用字符作为原子(作用非常大)
 

  1. \w:匹配任何字母,数字,下划线
  2. \W:除匹配任何字母,数字,下划线
  3. \d:十进制数字
  4. \D:除十进制数字
  5. \s:空白字符
  6. \S:除空白字符

 

string="taobao4 59454baidu"
pat="\w\d\s\d\d"
print(re.search(pat,string))

# 原子表(几个原子组成一个)

string="taobao4 59454baidu"
pat="tao[zub]ao"
pat="tao[^zuq]ao"
print(re.search(pat,string))

# 元字符
 

  1. . :出换行外任意一个字符
  2. ^ :开始位置
  3. $ :结束位置
  4. * :0\1\多次
  5. ?:0\1次
  6. + :1\多次
  7. {n} :恰好n次
  8. {n,} :至少n次
  9. {n,m}:至少n,最多m
  10. |  :模式选择符
  11. () :模式单元
wei="taoyun14524baidu"
pat="tao.un"
pat="bai..$"
ce=re.search(pat,wei)
print(ce)

# 模式修正符
 

  1. I 匹配时忽悠大小写 *
  2. M 多行匹配 *
  3. L 本地化识别匹配
  4. U Unicode
  5. S 让.匹配包括换行符 *
str="Python"
pat="pyt"
ce=re.search(pat,str,re.I)
print(ce)

# 贪婪模式和懒惰模式


# 默认是贪婪模式

str="pythony"
pat="p.*y" #贪婪模式,模糊
pat2="p.*?y" #懒惰模式,精准
ce=re.search(pat,str,re.I)
ce2=re.search(pat2,str,re.I)
print(ce)
print(ce2)

# 正则表达式函数


#1,match 重头开始匹配

str="poyajgsdabskjdbaiush"
pat="p.*?y"
ce=re.match(pat,str,re.I)
print(ce)

#2,search  任何地方都可以匹配

#3,全局匹配函数

str="efdrpoyajgspnyskjdbapyth"
pat="p.*?y"


# 全局匹配格式re.compile(正则表达式).findall(数据)

ce=re.compile(pat).findall(str)
print(ce)

 

#示例:匹配.com和.cn网址
​​​​​

string="<a href='http://www.baidu.com'>百度</a>"
pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
ce=re.search(pat,string)
print(ce)

#示例:匹配电话号码

string="adsgdiasdiauhdaj012-754745745dasd0773-46853415adasda"
pat="\d{4}-\d{7}|\d{3}-\d{8}"
ce=re.compile(pat).findall(string)
print(ce)

 

posted @ 2019-09-07 16:37  南宫乘风  阅读(130)  评论(0编辑  收藏  举报