正则表达式

正则表达式

regular expression

正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

**re模块使用

查找

search	 #只返回一个
match 	 #只返回一个,从头匹配的才算
findall 	#返回字符串
finditer	 #返回Match迭代器

search,match返回的都是Match对象
m.group()	显示数据
m.group(1)	显示第一组
m.groups()  显示所有组 (123)组

findall返回结果数组

替换

sub     #替换
subn	#替换后,多少被替换

re.sub(r'123','456',text)
返回替换后的字符串

re.subn(r'123','456',text)
返回替换后的字符串,与替换了几个地方

分割

split
正则表示用什么分割,返回分割的结果列表
例子

text='sassas  , sas ; sas'
re.split(r'\s*[,.;]\s*',text) #多个空格[,.;]多个空格
返回['sassas', 'sas', 'sas']

**语法规则

字符类别

匹配正则
a,b,c,1,2,3常量,写什么是什么
\d一个数字
\D一个非数字字符
\s一个空格
\S一个非空格
\w一个任意字母数字下划线
[abc]a,b,c任意一个字符
[a-e]a到e的任意一个
[^a-d]取反,除了a,b,c,d的任意一个
[\d]退格符(Backspace)
.通配符除\n 外的任意字符

量词(次数)

正则匹配
*0或多个
+1或多个
0或1个
{2}2个
{2,5}2到5
{2,}最少2
{,4}最多4

组合模式

多个模式组合

\d{6}[a-z]{6}   #六个数字,6个a-z

|	#表示两种模式都可以,如两个数字或两个字符   \d{2}|\w{2}


#分组,分组后可以组为单位使用量词
()			#如(122){3} 匹配3次122

位置

正则匹配
^字符串开头
\A字符串开头,忽略m标记
$字符串末
\Z字符串末,忽略m标记
\b在单词边界
\B不在单词边界
(?<=xxx)\d匹配 xxx之后 的 一个数字
(?=xxx)\d匹配 xxx开始的第一个数字
(?!XXX)\d匹配不是xxx开始的 一个数字
分组

太复杂加注释

r'(sa)(?#前面是匹配什么的)'
正则匹配
(…)一个组
(?P)组名为Y的组
(?:…)不捕获组
\Y匹配第Y个匹配的组
(?P=Y)匹配名为Y的组
(?#)注释
标记
re=re.findall(r'sad',flag=re.I)
正则匹配
i忽略大小写
m^ 和$匹配行首与行尾
s.匹配换行符
x允许空格与注释
\uUnicode匹配
替换
正则匹配
\g<0>插入整段匹配
\g插入匹配Y,Y可以是匹配的名字或数字
\Y插入名为Y的组

字符串匹配

import re

#固定字符串
re.findall(r'123455',text)
      
 r表示raw,原生字符串
      
#某一类
re.findall(r'\d',text)

\d \d+  
修饰前面的字符#如 \d匹配一个数字,\d{4}匹配四个


#组合匹配

re.findall(r'\d{2}abc\d{5}',text)


#多种情况,
|划分情况,找123456
re.findall(r'123|345')

#限定位置
	^开始位置
	$结束位置

#内部约束
w字符,()表示一组,(\1)表示跟第一组一样

text='abcabc5613111111'
re.findall(r'(\w{3})(\1)',text)
返回[('abc','abc'),('111','111')]

书写步骤

  • 1.查找匹配字符

    • 根据需求找合适的模式
    • 用查找函数
  • 2.分割字符串

    • 观察被分割字符串分割模式
    • split函数
  • 3.替换

    • 根据需求找合适的模式
    • 使用替换函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值