python用re模块实现正则表达式操作之完结篇

    作者:课课家教育更新于: 2018-11-25 19:37:08

    大神带你学编程,欢迎选课

      Python提供了re模块,用于实现正则表达式的操作。在实现时可以使用re模块提供的方法,(如search(),match(),findall()等)进行字符串处理也可以使用re模块compile()方法,将模式字符串转化为正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串好吧。

      re模块在使用时,需要先应用import语句引入,具体代码如下:

      imporrt re

      如果在使用re模块时,未将其引入,将抛出如图所示的异常

      Traceback (most recent call last):

      File "F:/python/ch1.py", line 1, in

      re

      NameError: name 're' is not defined

      前面已说过match()的使用方法,现在我们来看看另外的两种匹配方法,即search()方法与findall()方法

      1 使用search()方法进行匹配

      search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回 Match对象。其语法格式如下:

      re.search(pattern,string,[flags])

      参数说明如下:

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

      string:表示要匹配的字符串

      flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。常用的标志如下:

      

    /

     

      例如,搜索第一个以“mr_”开头的字符串,不区分字母大小写,代码如下:

      import re

      pattern = r'mr_\\w+'

      string = 'MR_SHOP mr_shop'

      match = re.search(pattern,string,re.l)

      print(match)

      string = '项目名称MR_SHOP mr_shop'

      match = re.search(pattern,string,re.l)

      print(match)

      运行结果如下,

      <_sre.SRE_Match object;span=(0,7),match="MR_SHOP">

      <_sre.SRE_Match object;span=(4,11),match="MR_SHOP">

      从上面的运行结果可以看出,search()方法不仅仅是在字符串的起始位置搜索,其他位置有符合匹配的也可以。

      例:

      验证是否出现危险字符:

        代码及运行结果如上

         3 使用findall()方法进行匹配

      findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,列表的形式返回,并以如果匹配成功,则返回包含匹配结构的列表否则返回空列表,其语法格式如下:

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

      参数说明同上表。

      搜索以"mr_"开头的字符串,代码如下

      import re

      pattern = r'mr_\\w+'

      string = 'MR_SHOP mr_shop'

      match = re.findall(pattern,string,re.l)

      print(match)

      string = '项目名称MR_SHOP mr_shop'

      match = re.findall(pattern,string,re.l)

      print(match)

      运行结果如下:

      ['MR_SHOP','mr_shop']

      ['mr_shop']

      如果在指定的模式字符串中包含分组,则返回与分组匹配的文本列表,例如下面的代码:

    运行结果如下:

      如果在指定的模式字符串中包含分组,则返回与分组匹配的文本列表,例如下面的代码:

      从上面的结果可以看出,并没有得到匹配的IP地址,这是因为在模式字符串中出现了分组,所以得到的结果是根据分组进行匹配的结果。即“(\\.[-9]{1,3})"匹配的结果,如果想获取整个模式字符串的匹配,可以将整个模式字符串使用一对小括号进行分组,然后在获取结果时直取返回值列表的每个元素(是一个元组)的第一个元素,代码如下:

    运行结果如上。

    到这里用re模块实现正则表达式的操作就完成了。

     

课课家教育

未登录

1