前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的正则

Python中的正则

作者头像
py3study
发布2020-01-20 10:37:54
4690
发布2020-01-20 10:37:54
举报
文章被收录于专栏:python3python3

regex_lst = [

  ('字符组',),

  ('非打印字符',),

  ('特殊字符',),

  ('定位符',),

  ('限定符',),

  ('re模块',),

  ('分组命名',),

  ('或匹配',),

  ('贪婪匹配与惰性匹配',),

]

字符组

  [0-9]

  [a-z]

  [A-Z]

  [^a]

非打印字符

  \w     匹配字母,数字,下划线  word

  \s      匹配空字符          space

  \d   匹配数字           digit

特殊字符

  .        匹配除换行符 \n 之外的任何单字符

定位符

  ^  匹配字符串的开始位置

  $    匹配字符串的结尾位置

限定符

  *      0次或多次

  +     1次或多次

  ?     0次或1次

  {n}   n次

  {n,}  n次或多次

  {n,m}    n次至m次

re模块

  re_lst = [

    ('re.compile(regex)',),

    ('re.findall(pattern, str)',),

    ('re.finditer(pattern, str)',),

    ('re.search(pattern, str)',),

  ]

re.compile(regex)

代码语言:javascript
复制
1 import re
2 
3 """
4 re.compile(regex)
5     编译一个正则表达式模式,返回一个模式对象
6 """
7 regex = r'[a-z]'
8 pattern = re.compile(regex)

re.findall(pattern, str)

代码语言:javascript
复制
 1 import re
 2 
 3 """
 4 re.findall(pattern, str)
 5     返回所有满足匹配条件的结果,并放到列表中
 6 """
 7 regex = r'[a-zA-Z]+'
 8 s = 'Hello Python'
 9 pattern = re.compile(regex)
10 
11 lst = re.findall(pattern, s)
12 print(lst)    # ['Hello', 'Python']

re.finditer(pattern, str)

代码语言:javascript
复制
 1 import re
 2 
 3 """
 4 re.finditer(pattern, str)
 5     返回迭代器
 6     迭代器中每一个元素需要调用group(),得到结果
 7 """
 8 regex = r'[a-zA-Z]+'
 9 s = 'Hello Python'
10 pattern = re.compile(regex)
11 
12 iterator = re.finditer(pattern, s)
13 
14 print(iterator)    # <callable_iterator object at 0x000001FDB3F29BE0>
15 
16 for i in iterator:
17     print(i.group())

re.search(pattern, str)

代码语言:javascript
复制
 1 import re
 2 
 3 """
 4 re.search(pattern, str)
 5     返回满足匹配条件的第一个结果对象
 6 """
 7 regex = r'[a-zA-Z]+'
 8 s = 'Hello Python'
 9 pattern = re.compile(regex)
10 
11 obj = re.search(pattern, s)
12 
13 if obj:
14     print(obj.group())

分组命名

代码语言:javascript
复制
 1 import re
 2 
 3 """
 4 flags
 5     re.I    忽略大小写
 6     re.M    多行模式,改变^和$的行为
 7     re.S    .可以匹配任意字符,包括换行符
 8 """
 9 regex = r'<dd>.*?title="(?P<title>.*?)".*?</dd>'
10 s = '<dd><a href="#" title="Python中的正则">...</a></dd>'
11 pattern = re.compile(regex, re.S)
12 
13 iterator = re.finditer(pattern, s)
14 
15 for i in iterator:
16     print(i.group('title'))

或匹配

代码语言:javascript
复制
 1 import re
 2 
 3 """
 4 取消分组
 5     (?:)
 6 或匹配
 7     long|short
 8 """
 9 regex = r'www.(?:page|hopen).com'
10 s = 'www.hopen.com'
11 pattern = re.compile(regex)
12 
13 iterator = re.finditer(pattern, s)
14 
15 for i in iterator:
16     print(i.group())

贪婪匹配与惰性匹配

代码语言:javascript
复制
 1 import re
 2 
 3 
 4 def get_data(regex, s):
 5     pattern = re.compile(regex)
 6     obj = re.search(pattern, s)
 7     if obj:
 8         return obj.group()
 9 
10 
11 # 贪婪匹配
12 regex_greedy = r'<.*>'
13 # 惰性匹配
14 regex_lazy = r'<.*?>'
15 content = '<a href="#">...</a>'
16 
17 ret_1 = get_data(regex_greedy, content)
18 ret_2 = get_data(regex_lazy, content)
19 print(ret_1)    # <a href="">...</a>
20 print(ret_2)    # <a href="">
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档