Python中正则表达式的巧妙使用

在这里插入图片描述字符串的匹配查询

re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果。该函数的参数含义如下:

findall(pattern, string, flags=0)
  • pattern:指定需要匹配的正则表达式。
  • string:指定待处理的字符串。
  • flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是让正则表达式对大小写不敏感;re.M的模式是让正则表达式可以多行匹配;re.S的模式指明正则符号.可以匹配任意字符,包括换行符 ;re.X模式允许正则表达式可以写得更加详细,如多行表示、忽略空白字符、加入注释等。
    字符串的匹配替换

re模块中的sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl。该函数的参数含义如下:

sub(pattern, repl, string, count=0, flags=0)
  • pattern:同findall函数中的pattern。
  • repl:指定替换成的新值。
  • string:同findall函数中的string。
  • count:用于指定最多替换的次数,默认为全部替换。
  • flags:同findall函数中的flags。

字符串的匹配分割

re模块中的split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split方法。该函数的具体参数含义如下:

  • split(pattern, string, maxsplit=0, flags=0)
  • pattern:同findall函数中的pattern。
  • maxsplit:用于指定最大分割次数,默认为全部分割。
  • string:同findall函数中的string。
  • flags:同findall函数中的flags。

实战案例

如果上面的函数和参数含义都已经掌握了,还需要进一步通过案例加强理解,接下来举例说明上面的三个函数:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入用于正则表达式的re模块
import re

# 取出字符串string8中所有的天气状态
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:'优'}"
# 基于正则表达式使用findall函数
print(re.findall("tianqi:'(.*?)'", string8))

# 取出string9中所有含O字母的单词
string9  = 'Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise'
# 基于正则表达式使用findall函数
print(re.findall('w*ow*',string9, flags = re.I))

# 将string10中的标点符号、数字和字母删除
string10 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。'
# 基于正则表达式使用sub函数
print(re.sub('[,。、a-zA-Z0-9()]','',string10))

# 将string11中的每个子部分内容分割开
string11 = '22| 101.62| 低区/7| 朝南 
 上海未来 - 浦东 - 金杨 - 2005年建'
# 基于正则表达式使用split函数
split = re.split('[-|
]', string11)
print(split)
# 分割结果的清洗
split_strip = [i.strip() for i in split]
print(split_strip)

out:
['晴', '阴~小雨', '小雨~中雨', '中雨~小雨']
['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of']
据悉这次发运的台蒸汽冷凝罐属于国际热核聚变实验堆项目的核二级压力设备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验
['2室2厅 ', ' 101.62平 ', ' 低区/7层 ', ' 朝南 ', ' 上海未来 ', ' 浦东 ', ' 金杨 ', ' 2005年建']
['2室2厅', '101.62平', '低区/7层', '朝南', '上海未来', '浦东', '金杨', '2005年建']

如上结果所示:

第一个例子中通过正则表达式"tianqi:’(.*?)’“实现目标数据的获取,如果不使用括号的话,就会产生类似"tianqi:‘晴’”, "tianqi:‘阴~小雨’"这样的值,所以,加上括号就是为了分组,且仅返回组中的内容;

第二个例子并没有将正则表达式写入圆括号,如果写上圆括号也是返回一样的结果,所以findall就是用来返回满足匹配条件的列表值,如果有括号,就仅返回括号内的匹配值;

第三个例子使用替换的方法,将所有的标点符号换为空字符,进而实现删除的效果;

第四个例子是对字符串的分割,如果直接按照正则 ‘[,。、a-zA-Z0-9()]’ 分割的话,返回的结果中包含空字符,如 ‘2室2厅’ 后面就有一个空字符。为了删除列表中每个元素的首尾空字符,使用了列表表达式,并且结合字符串的strip方法完成空字符的压缩。

### 回答1: Python正则表达式使用方法可以通过re模块来实现。首先需要导入re模块,然后使用re.compile()函数来编译正则表达式,再使用re.match()、re.search()、re.findall()等函数来匹配字符串并返回匹配结果。例如,可以使用re.compile(r'正则表达式')来编译正则表达式,然后使用re.search()函数来在字符串查找匹配该正则表达式的子串,并返回匹配对象。如果匹配成功,则可以使用group()方法来获取匹配的子串。 ### 回答2: Python正则表达式是一种强大的字符串匹配工具,可以用来检索、替换和验证字符串。 Python使用正则表达式需要先导入re模块,然后使用re模块的函数来操作正则表达式。 常用的re模块函数包括: 1. re.search(pattern, string):在字符串查找第一个匹配正则表达式的子字符串。返回一个Match对象,如果找到则返回匹配对象,否则返回None。 2. re.match(pattern, string):从字符串的开始位置匹配正则表达式。返回一个Match对象,如果找到则返回匹配对象,否则返回None。 3. re.findall(pattern, string):返回字符串所有匹配正则表达式的子字符串,以列表形式返回。 4. re.sub(pattern, repl, string):用指定的替换字符串替换所有匹配正则表达式的子字符串。 5. re.split(pattern, string):按照正则表达式的匹配项分割字符串,返回一个列表。 正则表达式的语法规则如下: 1. 字符匹配:使用普通字符匹配相应的字符,例如匹配数字使用\d,匹配字母使用\w。 2. 重复匹配:使用正则表达式的元字符+、*或?来进行重复匹配,+表示匹配1次或多次,*表示匹配0次或多次,?表示匹配0次或1次。 3. 匹配位置:使用正则表达式的元字符^和$来匹配字符串的开头和结尾。 4. 分组和捕获:使用小括号()来进行分组,可以使用\数字的形式引用分组捕获的内容。 除了上述常用的功能之外,Python正则表达式还可以使用一些特殊的符号和标记来实现更复杂的匹配操作,如使用[]匹配字符集合,使用|匹配多个模式的任意一个。 总之,Python正则表达式是一种十分强大的字符串处理工具,能够方便快捷地对字符串进行匹配、替换和验证操作,为处理文本数据提供了很大的便利性。 ### 回答3: 正则表达式是一种文本模式匹配工具,它可以用来检索、替换和验证文本数据。在Python,我们可以使用re模块来操作正则表达式。 在使用正则表达式前,我们首先需要导入re模块。然后,我们可以使用re模块提供的函数来对文本进行操作。 常用的正则表达式方法包括: 1. re.match(pattern, string): 从字符串的开头匹配模式,并返回一个匹配对象。如果匹配成功,可以使用group()方法获取匹配的字符串。 2. re.search(pattern, string): 在整个字符串搜索匹配模式,并返回一个匹配对象。与match()方法不同的是,search()方法不仅可以从字符串的开头匹配模式,还可以在字符串任意位置匹配。 3. re.findall(pattern, string): 在字符串查找匹配模式的所有出现,并返回一个包含所有匹配结果的列表。 4. re.sub(pattern, repl, string): 使用repl替换字符串匹配到的模式,并返回替换后的字符串。 5. re.split(pattern, string): 将字符串根据匹配到的模式切割成多个子串,并返回一个包含切割结果的列表。 其,pattern是我们要匹配的正则表达式模式,而string是要匹配的字符串。在正则表达式模式,我们可以使用特殊字符和正则表达式语法来指定匹配规则。 例如,我们可以使用\d来匹配任意一个数字,使用\w来匹配任意一个字母数字字符,使用.来匹配任意一个字符。还可以使用*、+、?、{m,n}等量词来指定匹配的次数。 总之,在Python,通过re模块我们可以利用正则表达式来处理字符串,进行文本匹配、替换和分割等操作,这对于数据处理和提取非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值