python正则表达式相关的模块是re

该模块有几个常用的方法

  • re.compile() 生成一个正则对象
  • re.match().group() 根据正则表达式匹配字符串,如果不是从字符串首位匹配的,则返回none,利用group()返回匹配的字符串
  • re.search().group()根据正则表达式查找匹配字符串,返回第一个匹配的字符串,不限制必须是从首位匹配
  • re.findall()根据正则表达式返回所有匹配的子字符串,用列表返回
  • re.finditer() 同findall类似,只是返回一个迭代器(迭代器指可以通过循环遍历打印迭代器内容的对象,如元祖、列表等)
  • re.sub()使用字符串去替换匹配正则中的值
  • re.split()使用正则表达式中的字符去分割字符串,返回一个列表

调用举例

    str4="hello....hello----hello------hello--hello----hello"
    pat4=re.compile(r"([a-z]+)")#生成正则对象
    obj = pat4.match(str4)#返回<re.Match object; span=(0, 5), match='hello'>,从首位匹配成功,返回一个对象
    
	#使用group()返回re.match()的匹配对象
    print(obj.group()) #打印hello
	#因为从首位匹配正则失败,故返回None
    print(pat4.match('0'+str4))

	#re.search() 返回第一个匹配的子字符串,不限制必须是从首位匹配,返回hello
    print(pat4.search(str4).group()) 
    print(pat4.search('0'+str4).group())#返回hello

	#re.findall() # 返回['hello', 'hello', 'hello', 'hello', 'hello', 'hello']
    print(pat4.findall(str4))

	#re.sub 替换#返回*....*----*------*--*----*,将re正则对象匹配的子字符串替换为sub的第一个参数
    print(pat4.sub('*',str4))

    #finditer生成匹配子字符串的迭代器
    parttern = re.compile('([0-9]+)([a-z]+)')#正则对象有两个部分,一共是([0-9]+)([a-z]+),有两个部分[0-9]+、[a-z]+
    data = parttern.finditer("010abb9992jack")
    for tmp in data:#利用循环去访问正则迭代器,每个对象是正则表达式匹配的一个子字符串
      print(tmp.group())#group()和group(0)返回匹配的整个子字符串 第一次循环返回010abb
      print(tmp.group(1))#group(1)返回第一个()中的子正则匹配的内容,第一次循环010
      print(tmp.group(2))#group(2)返回第二个()中的子正则匹配的内容,第一次循环abb
    #利用迭代器的next打印每个迭代对象的值
    print(next(data).group(1))#打印010
    print(next(data).group(2))#打印jack 因为是第二个next迭代对象的第2个子正则表达式匹配的内容

	#re.split()按照正则表达式的字符分割字符串
    str = '010-111.232-qqq'
    par = re.compile(r'[-.]')
    print(par.split(str))#返回['010', '111', '232', 'qqq']

● group() 同group(0)就是匹配正则表达式整体结果
● group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐