为什么要学正则表达式 - 7

2020-08-31  本文已影响0人  途途途途

在处理正字符串的时候,经常会有一些复杂规则的字符串需求,

正则表表达式就是描述这些规则的公工具。

换句话说。

正则表达式就是记录文本规则的代码。

上期咱们一起学习了正则表达式re模块提供的match()方法

为什么要学正则表达式 - 5

和search()方法

为什么要学正则表达式 - 6



今天我们来看看re模块提供的另一个findall()方法对字符串的操作和在python中实际开发的应用。


使用search()方法匹配字符串





search()方法用于在整个字符串搜索所有符合正则表达式的字符串,并且以列表的形式返回。如果匹配成功。则返回包含匹配结果的列表,否则则返回空列表。

它的语法格式如下:

re.findall(pattern, strings, [flags])

Hot

summer

参数:

pattern:表示模式字符串,由要匹配的正则表达式数转换而来.。

strings:表示需要匹配的字符串。

flags:选择参数,用于控制匹配方式。如是否区分字母大小写等。

咱们来看一组例子:

我们搜索以s开头的字符串,分别打印出不区分大小写和区分大小写的列表

pattern = r'S\w+'  #匹配字符串规则string = 'Sixty school students seeing surprising sun snow scream, shout simultaneously'  #要进行匹配的字符串match_obj = re.findall(pattern, string, re.I)   #按照不区分大小写的方式进行匹配print(match_obj)#['Sixty', 'school', 'students', 'seeing', 'surprising', 'sun', 'snow', 'scream', 'shout', 'simultaneously']
string = r'学生Sixty school students seeing surprising sun snow scream, shout simultaneously'match_obj = re.findall(pattern, string) #按照区分大小写的方式进行匹配print(match_obj)#['Sixty']

注意

如果在指定的模式字符串中,包含分组。则返回与分组匹配的的文本列表。


请看下例:

pattren = r'[1-9]{1,3}(\.[0-9]{1,3}){3}'str = '127.0.0.1 192.16.8.66'match_obj = re.findall(pattren, str)print(match_obj)#['.1', '.66']

从匹配的结果可以看出没有得到我们想要匹配的结果,而是匹配到了'(\.[0-9{1,3}])'的结果。

这是因为在模式字符串中出现了分组!

如果想要获取整个模式字符串中的匹配,需要将整个模式字符串使用一对小括号进行分组,这样在获取到正常的结果。

pattren = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'str = '127.0.0.1 192.16.8.66'match_obj = re.findall(pattren, str)print(match_obj)#[('127.0.0.1', '.1'), ('192.16.8.66', '.66')]

好了今天的分享就到此了,这两天内容很少很简单,主要是为了让我们可以更好地理解,明天咱们继续干正则表达式!

END— 历史消息

Python 3.8 官网文档(中文版附下载)



Python爬虫常用的三大库之Request



为什么要学正则表达式 - 1

上一篇 下一篇

猜你喜欢

热点阅读