正则表达式 regex
示例
‘\d+\s*\w?’
匹配的文本有一个或多个数字(\d+),接下来是0个或多个空白字符(\s)*,接下来是0个或1个字母/数字/下划线字符(\w?)
import re
reg=r'\d+\s*\w?'
s='012 drummers, 11213pipers, 10 lords, 9ladies, 8_maids, 7swans, 6 geese, 5 rings, 4 birds, 3 hens, 2 doves, 1个partridge'
rgex=re.compile(reg)
fa=rgex.findall(s)
print('匹配的文本有一个或多个数字(\d+),接下来是0个或多个空白字符(\s)*,接下来是0个或1个字母/数字/下划线字符(\w?)')
print(fa)
匹配的文本有一个或多个数字(\d+),接下来是0个或多个空白字符(\s)*,接下来是0个或1个字母/数字/下划线字符(\w?)
['012 d', '11213p', '10 l', '9l', '8_', '7s', '6 g', '5 r', '4 b', '3 h', '2 d', '1个']
1、表达一位数字字符:\d
\d 是一个正则表达式, 表示一位数字字符,即任何一位 0 到 9 的数字。
1234-123-1234:\d\d\d\d-\d\d\d-\d\d\d\d
字符分类 [0-5] 只匹配数字 0 到 5
2、数字匹配模式多次:\d{n}
1234-123-1234:\d\d\d\d-\d\d\d-\d\d\d\d=\d{4}-\d{3}-\d{4}
r=r'\d{8}'
reg=re.compile(r)
print(reg.findall('taxiGps20190531.csv'))
['20190531']
3、括号分组:(\d{3})-(\d{3})-(\d{4})
正则表达式字符串中的第一对括号是第1组。 第二对括号是第2组
向group()匹配对象方法传入整数1或2,就可以取得匹配文本的不同部分;
向group()方法传入0或不传入参数,将返回整个匹配的文本
需匹配()
(2020)-(09-08)——>(\d{4})-((\d{2}-\d{2}))
4、管道符:|
匹配许多表达式中的一个
5、匹配分组0次或一次 (可选匹配 ):(str)?
问号在正则表达式中可能有两种含义: 声明非贪心匹配或表示可选的分组。
6、匹配分组0次或无数次 :(\d)* - 尽可能多的匹配数字
7、匹配分组1次或无数次 :(\d)+ - 至少有一个数字
8、{}次数限制{3,5}出现3-5次
\d 0 到 9 的任何数字
\D 除 0 到 9 的数字以外的任何字符
\w 任何字母、数字或下划线字符(可以认为是匹配“单词” 字符)
\W 除字母、 数字和下划线以外的任何字符
\s 空格、制表符或换行符(可以认为是匹配“空白” 字符)
\S 除空格、 制表符和换行符以外的任何字符