第二十三天- 模块 re
2018-11-20 03:24:54来源:博客园 阅读 ()
# 1. 正则表达式
# 元字符
# . 除了换行符外任意字符
# \w 数字 字母 下划线
# \s 空白符
# \b 单词的末尾
# \d 数字
# \W 除了数字 字母 下划线
# \D 除了数字
# \S 除了空白符
# ^ 开头
# $ 结尾
# [] 匹配字符组中的字符
# [^] 除了字符组内的元素外
# 量词 限定符
# * {0,n} 零或者更多
# + {1,n} 一或更多
# ? {0,1} 零或一
# {p} p次
# {p,} p次或更多次
# {p,q} 从p到q次
# .* 贪婪匹配 尽可能多的匹配到结果
# .+
# .*? 惰性匹配 是尽可能的少匹配.
# 分组 正则中使?()进?分组. 如.匹配?个相对复杂的?份证号
# ^[1-9]\d{14}(\d{2}[0-9x])?$
# ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$
# 转义
# 正则表达式中,有很多有特殊意义的是元字符,如\n和\s等,若要在正则中匹配正常的"\n"?不是"换?符"需要对"\"进?转义, 变成'\\'.
# 而在python中,都是字符串的形式出现,字符串中\也有特殊的含义,本身还需转义.所以匹配?次"\n",字符串中要写成'\\n',那么正则就要写成"\\\\n",
# 这样太麻烦.所以这时用r'\n'这个概念,此时的正则是r'\\n'就可以了.
# 如 r"www\.(baidu|google)\.com","www.google.com"
# \n 换行
# \\n \n
# \.
# \/
# \?
# 2. re模块
# findall() 获取到匹配的所有内容
# finditer() 匹配到所有内容。 返回迭代器
# search() 搜索。查到了就返回
# match() 匹配. 从头开始匹配
1 # r"(?P<name>正则)" 2 3 import re 4 res = re.search('e','leiyunse') # 搜索 搜到 一个 结果就返回 5 print(res.group()) # e 6 7 res = re.match('\w+','wuwu is not good man') # match 从开头匹配 若匹配到了就返回 8 print(res.group()) # wuwu 9 10 lst = re.findall('\w+','wusir and exo') # findall 查找所有 返回list 11 print(lst) # ['wusir', 'and', 'exo'] 12 13 it = re.finditer("\w+","mai le fo leng") # 返回迭代器 14 for el in it: 15 print(el.group()) 16 ''' 17 mai 18 le 19 fo 20 leng 21 ''' 22 23 # 分组优先级 24 lst = re.findall(r"www\.(baidu|google)\.com","www.google.com") # ()最优先返回 25 print(lst) # ['google'] 26 27 # (?:) 去掉优先级 28 lst = re.findall(r"www\.(?:baidu|google)\.com","www.google.com") 29 print(lst) # ['www.google.com'] 30 31 # split 切割 若加括号()会保留切的 32 lst = re.split("([ab])","alex is not a sb,no he is a big sb") 33 print(lst) 34 35 # sub 替换 36 res = re.sub(r"\d+","_sb_","alex111wusir222taibai666ritian999") 37 print(res) # alex_sb_wusir_sb_taibai_sb_ritian_sb_ 38 39 # subn 替换 返回元组 带替换次数 40 res = re.subn(r"\d+","_sb_","alex111wusir222taibai666ritian999") 41 print(res) 42 43 # re.compile() # 把正则表达式预加载 44 obj = re.compile(r"alex\d+and") 45 res = obj.search("alex222andwusir333taibai666ritian999") 46 print(res.group()) # alex222and 47 # 若数字单独拿出来 48 obj = re.compile(r"alex(?P<name>\d+)and") 49 res = obj.search("alex222andwusir333taibai666ritian999") 50 print(res.group()) # alex222and 51 print(res.group("name")) # 222
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python学习之旅(六)
下一篇:Python中的list
- python3 enum模块的应用 2019-08-13
- 利用python自动生成verilog模块例化模板 2019-08-13
- python第三天---列表的魔法 2019-07-24
- Python random模块(以后用到一个再更新一个) 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash