美文网首页
为什么要学正则表达式 - 7

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

作者: 途途途途 | 来源:发表于2020-08-31 08:16 被阅读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

    相关文章

      网友评论

          本文标题:为什么要学正则表达式 - 7

          本文链接:https://www.haomeiwen.com/subject/phxirktx.html