1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python_正则表达式提取字符串

Python_正则表达式提取字符串

时间:2023-01-12 18:55:20

相关推荐

Python_正则表达式提取字符串

1、指定位置字符串提取

如果要提取指定位置的话,我们可以使用 (.+?)这个正则表达式来提取。举例:一个字符串“a123456789b”,如果我们想提取ab之间的数字,可以使用 findall 配合正则表达式,会返回list。

import reString = "a123456789b"regular = re.findall(r"a(.+?)b", String)print(regular)print(regular[0])结果:['123456789']123456789

2、贪婪和非贪婪匹配

如果我们有一个字符串”a123b456789b”,如果我们想匹配a和最后一个b之间的所有值而非a和第一个出现的b之间的值,可以用 ? 来控制正则贪婪和非贪婪匹配的情况。

import reString = "a123b456789b"# . 匹配任意字符,除了换行符# + 匹配1个或多个的表达式# ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式regular = re.findall(r"a(.+?)b", String)print(regular)regular = re.findall(r"a(.+)b", String)# 输出['123b456']print(regular)结果:['123']['123b456789']

3、多行匹配

如果你要多行匹配,那么需要加上re.S和re.M标志

# 加上re.S后, .将会匹配换行符,默认.不会匹配换行符import reString = "a123b\na456789b"# \d 匹配任意数字,等价于 [0-9]# re.S 使 . 匹配包括换行在内的所有字符# re.M 多行匹配,影响 ^ 和 $regular = re.findall(r"a(\d+)b.+a(\d+)b", String)print(regular)regular = re.findall(r"a(\d+)b(.)a(\d+)b", String, re.S)print(regular)regular = re.findall(r"a(\d+)b.a(\d+)b", String, re.S)print(regular)结果:[][('123', '\n', '456789')][('123', '456789')]# 加上re.M后,^$标志将会匹配每一行,默认^和$只会匹配第一行import reString = "a123b\na456789b"# ^ 匹配字符串的开头# $ 匹配字符串的末尾regular = re.findall(r"^a(\d+)b", String)print(regular)regular = re.findall(r"^a(\d+)b", String, re.M)print(regular)结果:['123']['123', '456789']

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。