前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2017/6/8-python正则表达式的使用

2017/6/8-python正则表达式的使用

作者头像
致Great
发布2018-04-11 16:32:37
7590
发布2018-04-11 16:32:37
举报
文章被收录于专栏:程序生活程序生活
代码语言:javascript
复制
#match()函数的使用

#\w匹配字母数字及下划线
# \s匹配任意空白字符,等价于 [\t\n\r\f].
# \d匹配任意数字,等价于 [0-9]
# [...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
# [^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
#^匹配字符串的开头
#{n}精确匹配n个前面表达式。
import re
content='Hello 123 4567 World_This is a Regex Demo'
print(len(content))
pattern=re.compile(r'^Hello\s\d\d\d\s\d{4}\s\w{10}')
result=re.match(pattern,content)
print(result)
print(result.group())
print(result.span())
代码语言:javascript
复制
41
<_sre.SRE_Match object; span=(0, 25), match='Hello 123 4567 World_This'>
Hello 123 4567 World_This
(0, 25)
代码语言:javascript
复制
#匹配目标

#group()会输出完整的匹配结果,而group(1)会输出第一个被()包围的匹配结果
import re
content='Hello 1234567 World_This is a Regex Demo'
pattern=re.compile(r'^Hello\s(\d{7})\s(\w{5})')
result=re.match(pattern,content)
print(result)
print(result.group())
print(result.group(1))
print(result.group(2))
print(result.span())
代码语言:javascript
复制
<_sre.SRE_Match object; span=(0, 19), match='Hello 1234567 World'>
Hello 1234567 World
1234567
World
(0, 19)
代码语言:javascript
复制
#通用匹配
#.匹配任意字符(除换行符外)
#*匹配0次或者多次
import re
content='Hello 123 4567 World_This is a Regex Demo'
pattern=re.compile(r'^Hello.*Demo$')
result=re.match(pattern,content)
print(result)
print(result.group())
print(result.span())
代码语言:javascript
复制
<_sre.SRE_Match object; span=(0, 41), match='Hello 123 4567 World_This is a Regex Demo'>
Hello 123 4567 World_This is a Regex Demo
(0, 41)
代码语言:javascript
复制
#贪婪匹配与非贪婪匹配

#01贪婪匹配
import re
content='Hello 1234567 World_This is a Regex Demo'
pattern=re.compile(r'^He.*(\d+).*Demo$')
result=re.match(pattern,content)
print(result)
print(result.group())
print(result.group(1))
代码语言:javascript
复制
<_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
Hello 1234567 World_This is a Regex Demo
7
代码语言:javascript
复制
#02非贪婪匹配
import re
content='Hello 1234567 World_This is a Regex Demo'
pattern=re.compile(r'He.*?(\d+).*Demo$')
result=re.match(pattern,content)
print(result)
print(result.group())
print(result.group(1))
代码语言:javascript
复制
<_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
Hello 1234567 World_This is a Regex Demo
1234567
代码语言:javascript
复制
#但这里注意,如果匹配的结果在字符串结尾,.*?就有可能匹配不到任何内容了,因为它会匹配尽可能少的字符,例如:
import re
content='https://www.baidu.com/search/error.html'
result1=re.match(r'^https.*search/(.*)',content)
result2=re.match(r'https.*search/(.*?)',content)
print(result1.group(1))
print(result2.group(1))
代码语言:javascript
复制
error.html
代码语言:javascript
复制
#修饰符
#正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。
import re
content = '''Hello 1234567 World_This
is a Regex Demo'''

pattern=re.compile(r'^He.*?(\d+).*?Demo$',re.S)
result=re.match(pattern,content)
print(result.group(1))
代码语言:javascript
复制
1234567
代码语言:javascript
复制
#转义匹配
import re
content='(百度)www.baidu.com'
pattern=re.compile(r'\(百度\)www\.baidu\.com')
result=re.match(pattern,content)
print(result.group())
代码语言:javascript
复制
(百度)www.baidu.com
代码语言:javascript
复制
#search()
import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
pattern=re.compile('He.*?(\d+).*Demo')
result=re.search(pattern,content)
print(result.group())
print(result.group(1))
代码语言:javascript
复制
Hello 1234567 World_This is a Regex Demo
1234567
代码语言:javascript
复制
import re
html = '''<div id="songs-list">
    <h2 class="title">经典老歌</h2>
    <p class="introduction">
        经典老歌列表
    </p>
    <ul id="list" class="list-group">
        <li data-view="2">一路上有你</li>
        <li data-view="7">
            <a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
        </li>
        <li data-view="4" class="active">
            <a href="/3.mp3" singer="齐秦">往事随风</a>
        </li>
        <li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
        <li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
        <li data-view="5">
            <a href="/6.mp3" singer="邓丽君"><i class="fa fa-user"></i>但愿人长久</a>
        </li>
    </ul>
</div>'''
result=re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S)
if result:
    print(result.group(1), result.group(2))
代码语言:javascript
复制
齐秦 往事随风
代码语言:javascript
复制
#sub()方法
import re
content = '54aK54yr5oiR54ix5L2g'
result=re.sub('\d+','',content)
print(result)
代码语言:javascript
复制
aKyroiRixLg
代码语言:javascript
复制
log='2017-06-06 15:06:16,148 - root - DEBUG - logger debug message'
print(log.split('-'))
代码语言:javascript
复制
['2017', '06', '06 15:06:16,148 ', ' root ', ' DEBUG ', ' logger debug message']
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.06.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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