find_all 返回空 python_通俗易懂 python 正则表达式入门

正则表达式, 也叫规则表达式, 是强大的文本字符串处理工具, 通常用来验证, 查找, 筛选, 提取, 替换那些符合某个规则的文本字符串1, 匹配规则正则表达式的核心就是设计一个规则, 按照这个规则"按图索骥", 去寻找符合这个规则的字符串, 并将它按需处理先以一个最简单的例子进行探索:re: 正则表达式模块findall: 模块的一个方法, 传入 正则表达式 和 要去匹配字符串 将匹配结...
摘要由CSDN通过智能技术生成

正则表达式, 也叫规则表达式, 是强大的文本字符串处理工具, 通常用来验证, 查找, 筛选, 提取, 替换那些符合某个规则的文本字符串

1, 匹配规则

正则表达式的核心就是设计一个规则, 按照这个规则"按图索骥", 去寻找符合这个规则的字符串, 并将它按需处理

先以一个最简单的例子进行探索:

re: 正则表达式模块findall: 模块的一个方法, 传入 正则表达式 和 要去匹配字符串 将匹配结果以列表形式返回, 没有匹配结果返回空列表\d: 定义的规则, 表示匹配任意一个 0~9 的数字198\d年: 匹配符合 198某年 的字符串

然后按照规则去匹配字符串: '1988年 2000年 2020年 1980年'

# 导入模块 re
import re

# 按规则 r'198\d年' 匹配, r 的作用在 python 基础部分已介绍
re.findall(r'198\d年', '1988年 2000年 2020年 1980年')
['1988年', '1980年']

\d 是其中一个规则定义符, 可以和其他字符组合成正则表达式, 它自身也是一个正则表达式

而且任意一个字符都可以作为匹配它自身的正则表达式, 包括空字符'', 只是要匹配规则定义符, 需要用 \ 进行转义

re.findall('', 'a'), re.findall(r'\\d.+\[a]', r'a\d.+[a]')
(['', ''], ['\\d.+[a]'])

2, 常用规则定义符

2.01, 定义类别匹配

\w 匹配任意一个字母, 数字及下划线, \W 匹配任意一个非字母, 数字及下划线

a = r'my\wname'
b = r'my\Wname'
c = 'my1name, my_name, my.name, myaname'
re.findall(a, c), re.findall(b, c)
(['my1name', 'my_name', 'myaname'], ['my.name'])

\d 匹配任意一个 0~9 的数字, \D 匹配任意任意一个非数字

a = r'01\d-\D123'
b = '010-0123, 010-爱123, 01o-0123'
re.findall(a, b)
['010-爱123']

\s 匹配一个空白字符, \S 匹配一个非空白字符, 空白包括一个空格 , \f 分页符, \n \r 换行符, \t 制表符, \v 纵向制表符

a = r'a\sb\Sc'
b = 'a b c, a bcc, a bcc'
re.findall(a, b)
['a bcc']

. 匹配除换行符 \r \n 之外的任意一个字符

a = r'a.b'
b = '''a
b, a-b, a b, a b'''
re.findall(a, b)
['a-b', 'a b']

2.02, 定义范围匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值