- <font size="3">a = re.findall('\d+', s)
- print(a) </font>
复制代码 运行结果:
- <font size="3">['1360942725']</font>
复制代码 3.2 \D匹配任意单个非数字字符,等价于[^0-9] - <font size="3">a = re.findall('\D', s)
- print(a)</font>
复制代码运行结果 - <font size="3">['<', 'a', ' ', 'h', 'r', 'e', 'f', '=', "'", ' ', 'a', 's', 'd', 'f', "'", '>', '<', '/', 'a', '>']</font>
复制代码 3.3 \s匹配任意单个空白符,包括空格,制表符(tab),换行符等 - <font size="3">s = 'fdfa**68687+ 我怕n fdg\tf_d\n'
- a = re.findall('\s', s)
- print(a) </font>
复制代码运行结果: - <font size="3">[' ', ' ', '\t', '\n']</font>
复制代码3.4 \S 匹配任何非空白字符 - <font size="3">s = 'fdfa**68687+ 我怕n fdg\tf_d\n'
- a = re.findall('\S', s)
- print(a) </font>
复制代码运行结果: - <font size="3">['f', 'd', 'f', 'a', '', '', '6', '8', '6', '8', '7', '+', '我', '怕', 'n', 'f', 'd', 'g', 'f', '_', 'd']</font>
复制代码3.5 \w 匹配除符号外的单个字母,数字,下划线或汉字等 - <font size="3">a = re.findall("\w", s)
- print(a)</font>
复制代码运行结果: - <font size="3">['f', 'd', 'f', 'a', '6', '8', '6', '8', '7', '我', '怕', 'n', 'f', 'd', 'g', 'f', '_', 'd']</font>
复制代码 字符 | 说明 | . | 匹配除换行符以外的任意字符 | \w | 匹配字母或数字或下划线 | \W | 和 \w 相反 | \d | 匹配数字 | \D | 和 \d 相反 | \s | 匹配任意的空白符 | \S | 和 \s 相反 |
小案例
- <font size="3">s = "3003756995@qq.com"
- a = re.findall('^\w+@\w+\.com[align=left][color=rgb(29, 33, 41)][backcolor=rgb(247, 248, 250)][font=UbuntuMono, "][size=15px]是正确格式的邮箱[/size][/font][/backcolor][/color][/align][list=1]
- [*]检测手机号码
- [/list], s) # 检测邮箱
- if a:
- print('是正确格式的邮箱')
- else:
- print('不是邮箱地址')</font>
复制代码是正确格式的邮箱 2.检测手机号码 - s = '13812345678'
- r = re.findall('^1[3-9]\d{9}[align=left][color=rgb(29, 33, 41)][backcolor=rgb(247, 248, 250)][font=UbuntuMono, "][size=15px]手机号码格式正确[/size][/font][/backcolor][/color][/align][b][color=rgb(71, 161, 246)][url=http://4.re/]4.re[/url][/color] 模块常用函数[/b][b]4.1 re.match[/b][code]re.match(pattern, string, flag)
复制代码- 尝试从字符串的起始位置匹配一个模式,成功返回匹配对象,否则返回 None
- pattern: 正则表达式
- string: 被匹配的字符串
- flag: 标志位,表示匹配模式
, s) # 检查手机号码
if r:
print('手机号码格式正确')
else:
print('手机号码格式不正确')[/code]手机号码格式正确 4.re 模块常用函数4.1 re.match- re.match(pattern, string, flag)
复制代码- 尝试从字符串的起始位置匹配一个模式,成功返回匹配对象,否则返回 None
- pattern: 正则表达式
- string: 被匹配的字符串
- flag: 标志位,表示匹配模式
- import re
- url = 'www.hhxpython.com'
- res = re.match('www', url) # 'www' 就是正则表达式,没有元字符表示匹配字符本身
- # re.match默认是从字符串开头匹配,等价于'^www'
- print(res)
复制代码
运行结果:- <re.Match object; span=(0, 3), match='www'>
复制代码- res2 = re.match('hhx', url)
- print(res2)
复制代码 运行结果:
匹配对象 match 函数返回一个匹配对象,通过这个对象可以取出匹配到的字符串和分组字符串 - line = 'Good good study, Day day up!'
- match_obj = re.match('(?P<aa>.*), (.*) (.*)', line)
- if match_obj:
- print(match_obj.group()) # 返回匹配到的字符串
- print(match_obj.group(1)) # 返回对应序号分组字符串 从1开始
- print(match_obj.group(2))
- print(match_obj.group(3))
- else:
- print('not found')
- print(match_obj.groups()) # 返回分组字符串元组
- print(match_obj.groupdict()) # 按照分组名和分组字符串组成字典 (?P<name>pattern)
复制代码运行结果: - Good good study, Day day up!
- Good good study
- Day day
- up!
- ('Good good study', 'Day day', 'up!')
- {'aa': 'Good good study'}
复制代码 4.2 re.search
- re.search(pattern, string, flag)
复制代码- 扫描整个字符串返回第一个成功的匹配对象
- pattern: 正则表达式
- string: 被匹配的字符串
- flag: 标志位,表示匹配模式
- url = 'www.hhxpython.com'
- res = re.search('www', url) # 'www' 就是正则表达式,没有元字符表示匹配字符本身
- print(res)
复制代码 运行结果:- <re.Match object; span=(0, 3), match='www'>
复制代码- res2 = re.search('hhx', url)
- print(res2)
复制代码 运行结果:
- <re.Match object; span=(4, 7), match='hhx'>
复制代码- res3 = re.search('h', url)
- print(res3)
复制代码 运行结果:
- <re.Match object; span=(4, 5), match='h'>
复制代码 4.3 re.sub
- re.sub(pattern, repl, string, count=0, flag)
复制代码- 将表达式匹配到的部分替换为制定字符串,返回替换后的新字符串
- pattern: 正则表达式
- repl: 用来替换的字符串
- string: 被匹配的字符串
- count: 替换次数,默认为 0,表示全部替换
- flags: 标志位,表示匹配模式
- phone = '2004-959-559 # 这是一个国外电话号码'
-
- # 删除字符串中的python注释
- num = re.sub('#.*', '', phone)
- print(num)
复制代码 运行结果:- 2004-959-559
- # 删除连接符号 -
- num = re.sub('-', '', num)
- print(num)
复制代码 运行结果:
|