python正则表达式(一)

三个常用函数之一 findall

  • 第一个参数为正则表达式,第二个参数为字符串,返回的是列表,第三个参数是匹配模式,常用的有:
  • re.I 忽略大小写
  • re.S 忽略.的关系,让.可以匹配出\n
  • 可以用|连接匹配模式
import re
a = "aasdssa,i123ja5sd4n,lai,lbi,lci,aasd"

[] 字符种类,匹配方括号内的任意字符,括号内每个字符是 或 的关系

#输出所有数字
r = re.findall('[0-9]',a)
print(r)
#查0-3
r1 = re.findall('[0-3]',a)
print(r1)
#灵活应用,取出上面的lai和lbi,以及其它的
r2 = re.findall('l[ab]i',a)
print(r2)
r3 = re.findall('l[a-c]i',a)
print(r3)
['1', '2', '3', '5', '4']
['1', '2', '3']
['lai', 'lbi']
['lai', 'lbi', 'lci']

()又称为组,匹配括号内完全相等的字符串,每个字符是 且 的关系,也可以后加下面提到的{}表数量

r1 = re.findall('(aas)',a)
print(r1)
#多个组
r2 = re.findall('(aas)(dss)',a) #注意这样返回列表了
print(r2)
['aas', 'aas']
[('aas', 'dss')]

[^]匹配除了方括号内的任意字符

#输出所有非数字
r = re.findall('[^0-9]',a)
r
['a', 'a', 's', 'd', 'i', 'j', 'a', 's', 'd', 'n', 'l', 'a', 'i']

用\概括字符集

  • \d所有数字,\D所有非数字
  • \s匹配空白字符(包括空格、换行、制表)相当于[\t\n\r\f\v]
  • \S与\s相反
  • \w匹配中文、下划线、数字、英文相当于[a-zA-z0-9_] 不能匹配特殊字符
  • \W与\w相反 匹配特殊字符,空格\n \t $&等
  • \b匹配单词的开始或结束
  • \B与\b相反

数量词{}

  • 注意贪婪模式与非贪婪模式,如{2,3}先找2个连续的字母,最多找到3个连续的字母后停止,在2个以后且3个以内发现了不是字母的也停止。非贪婪{3,5}?,其实它和{3}是一样的
  • *匹配0次或无限次
  • +匹配1次或无限次
  • ?匹配0次或1次
#注意这里aasdssa的输出
r = re.findall('[a-zA-z]{2,3}',a)
print(r)
r1 = re.findall('aasds*',a)
print(r1)
r2 = re.findall('aasds+',a)
print(r2)
#注意这个和上个把aasdssa中的输出了
r3 = re.findall('aasds?',a)
print(r3)
['aas', 'dss', 'ja', 'sd', 'lai', 'lbi', 'lci', 'aas']
['aasdss', 'aasd']
['aasdss']
['aasds', 'aasd']

[]外面的^表示从字符串开始匹配, $表示从结尾匹配

b = 'a123452aa,322122'
c = '123144sad'
d = '1233'
r = re.findall('^\d{2,6}',b)
r2 = re.findall('^\d{2,6}',c)
print(r)
print(r2)
r = re.findall('\d{2,6}$',b)
r2 = re.findall('\d{2,6}$',c)
print(r)
print(r2)
#同时加上
r3 = re.findall('^\d{4}$',d)
print(r3)
[]
['123144']
['322122']
[]
['1233']

.表示匹配除了换行符的任意字符

str = 'asca,123d,asc\n'
r1 = re.findall('asc.{1}',str, re.S)
r2 = re.findall('asc.{1}',str)
print(r1)
print(r2)
['asca', 'asc\n']
['asca']

| 或运算符,匹配前或后的字符

str = 'asca,123d,asc\n'
r1 = re.findall('as|c{1}',str, re.S)
print(r1)
['as', 'c', 'as', 'c']

\转义字符,用于匹配一些保留字符[].(),{}等

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值