正则表达式(regular)知识(整理)

正则(regular),要使用正则表达式需要导入Python中的re(regular正则的缩写)模块。正则表达式是对字符串的处理,我们知道,字符串中有时候包含很多我们想要提取的信息,掌握这些处理字符串的方法,能够方便很多我们的操作。

正则表达式(regular),处理字符串的方法。

正则是一种常用的方法,因为python中文件处理很常见,文件里面包含的是字符串,要想处理字符串,那么就需要用到正则表达式。因而要掌握好正则表达式。下面下来看看正则表达式中包含的方法:

  (1)match(pattern, string, flags=0)

def match(pattern, string, flags=0):     """Try to apply the pattern at the start of the string, returning     a match object, or None if no match was found."""     return _compile(pattern, flags).match(string)

从上面注释:Try to apply the pattern at the start of the string,returning a match object,or None if no match was found.从字符串的开头开始查找,返回一个match object对象,如果没有找到,返回一个None。

重点:(1)从开头开始查找;(2)如果查找不到返回None。

下面来看看几个实例: 

import re   string = "abcdef"   m = re.match("abc",string) (1)匹配"abc",并查看返回的结果是什么   print(m)   print(m.group())   n = re.match("abcf",string)   print(n) (2)字符串不在列表中查找的情况   l = re.match("bcd",string) (3)字符串在列表中间查找情况   print(l)

运行结果如下:

<_sre.SRE_Match object; span=(0, 3), match='abc'> (1)abc (2) None (3) None (4)

从上面输出结果(1)可以看出,使用match()匹配,返回的是一个match object对象,要想转换为看得到的情况,要使用group()进行转换(2)处所示;如果匹配的正则表达式不在字符串中,则返回None(3);match(pattern,string,flag)是从字符串开始的地方匹配的,并且只能从字符串的开始处进行匹配(4)所示。

(2)fullmatch(pattern, string, flags=0)

def fullmatch(pattern, string, flags=0):     """Try to apply the pattern to all of the string, returning     a match object, or None if no match was found."""     return _compile(pattern, flags).fullmatch(string)

从上面注释:Try to apply the pattern to all of the string,returning a match object,or None if no match was found...

(3)search(pattern,string,flags)

def search(pattern, string, flags=0):     """Scan through string looking for a match to the pattern, returning     a match object, or None if no match was found."""     return _compile(pattern, flags).search(string) search(pattern,string,flags)的注释是Scan throgh string looking for a match to the pattern,returning a match object,or None if no match was found.在字符串任意一个位置查找正则表达式,如果找到了则返回match object对象,如果查找不到则返回None。

重点:(1)从字符串中间任意一个位置查找,不像match()是从开头开始查找;(2)如果查找不到则返回None;

import re   string = "ddafsadadfadfafdafdadfasfdafafda"   m = re.search("a",string) (1)从中间开始匹配   print(m)   print(m.group())   n = re.search("N",string) (2)匹配不到的情况   print(n)

运行结果如下:

<_sre.SRE_Match object; span=(2, 3), match='a'> (1)a (2)None (3)

从上面结果(1)可以看出,search(pattern,string,flag=0)可以从中间任意一个位置匹配,扩大了使用范围,不像match()只能从开头匹配,并且匹配到了返回的也是一个match_object对象;(2)要想展示一个match_object对象,那么需要使用group()方法;(3)如果查找不到,则返回一个None。

    (4)sub(pattern,repl,string,count=0,flags=0)

def sub(pattern, repl, string, count=0, flags=0):     """Return the string obtained by replacing the leftmost     non-overlapping occurrences of the pattern in string by the     replacement repl. repl can be either a string or a callable;     if a string, backslash escapes in it are processed. If it is     a callable, it's passed the match object and must return     a replacement string to be used."""     return _compile(pattern, flags).sub(repl, string, count) sub(pattern,repl,string,count=0,flags=0)查找替换,就是先查找pattern是否在字符串string中;repl是要把pattern匹配的对象,就要把正则表达式找到的字符替换为什么;count可以指定匹配个数,匹配多少个。示例如下: import re   string = "ddafsadadfadfafdafdadfasfdafafda"   m = re.sub("a","A",string) #不指定替换个数(1)   print(m)   n = re.sub("a","A",string,2) #指定替换个数(2)   print(n)   l = re.sub("F","B",string) #匹配不到的情况(3)   print(l)

运行结果如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjsgxs.html