下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:课课家教育     来源: http://www.kokojia.com点击数:1162发布时间: 2018-11-26 10:03:47

标签: python项目Django项目CRMpython实战项目Python开发python全栈开发

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

  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模块实现正则表达式的操作就完成了。

 

赞(28)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程