python之常用正则表达式

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python之常用正则表达式
(.*?)用于分组,默认返回括号内的匹配内容,
(.*?) 的使用概率较高,那么这个正则表达式到底什么意思呢?
◆“.*?” 表示非贪心算法,表示要精确的配对。

◆“.*”表示贪心算法,表示要尽可能多的匹配
◆“()” 表示要获取括弧之间的信息。

基于正则表达式完成字符串的查询,替换和分割操作,这些操作都需要导入re模块,并使用如下几个函数。

1.匹配查询函数
findall(pattern, string, flags=0)
findall 函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果。

该函数的参数含义如下:
pattern:指定需要匹配的正则表达式。

string:指定待处理的字符
flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。

1)re.I的模式是让正则表达式对大小写不敏感;
2)re.M的模式是让正则表达式可以多行匹配;
3)re.S的模式指明正则符号.可以匹配任意字符,包括换行符\n;
4)re.X模式允许正则表达式写得更详细,如多行表示、忽略空白字符、加入注释等。

2.匹配替换函数
sub(pattern, repl, string, count=0, flags=0)
sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl。

该函数的参数含义如下:
1)pattern:同findall函数中的pattern。

2)repl:指定替换成的新值。

3)string:同findall函数中的string。

4)count:用于指定最多替换的次数,默认为全部替换。

5)flags:同findall函数中的flags。

3.匹配分割函数
split(pattern, string, maxsplit=0, flags=0)
split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split方法。

该函数的具体参数含义如下:
1)pattern:同findall函数中的pattern。

2)maxsplit:用于指定最大分割次数,默认为全部分割。

3)string:同findall函数中的string。

4)flags:同findall函数中的flags。

4、示例:
import re
string8 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'轻度污染'},
{ymd:'2018-01-02',tianqi:'阴~小雨',aqiInfo:'优'},
{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'优'},
{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'优'}"
#取出字符串中所有的天气状态
print(re.findall("tianqi:'(.*?)' '',string8))
#此处注意观察(.*?)' 使用的是精确匹配,当匹配到后面是' 号就停止
string9="I don't want to be someone that you're settling for. I don't want to be someone that anyone settles for. "
print(re.findall('\w*o\w',string9,flags = re.I)) #此处留个缺陷" don't you're "匹配出来不是我们想要的结果,用于思考
##out:
['don', 'someon', 'you', 'for', 'don', 'someon', 'anyon', 'for']
string10 = '据路透社报道,由于土耳其军队离美军驻地已经过近,美军数架F-15战斗机和AH-64“阿帕奇”攻击直升机在土军阵地上方进行了威慑性飞行。

'
print(re.sub('[,。

,“”a-zA-Z0-9()]','',string10)) #将标点符号,数字和字母删除
out:
据路透社报道由于土耳其军队离美军驻地已经过近美军数架-战斗机和-阿帕奇攻击直升机在土军阵地上方进行了威慑性飞行
#将每一部分的内容分割开
string11 = '2室2厅| 101.62平|低区/7层| 朝南\n 上海未来- 浦东-金杨-2005年建'
split =re.split('[-\|\n]',string11) #[]列表内的所有符号作为分隔的标志
print(split)
split_strip = [i.strip() for i in split]
print(split_strip )
out:
['2室2厅', '101.62平', '低区/7层', '朝南', '上海未来', '浦东', '金杨', '2005年建']。

相关文档
最新文档