优草派  >   Python

如何对Python文本模式进行匹配?如何使用match()方法进行匹配?

翟嘉慧            来源:优草派

在python编写的时候,我们通常会对字符串进行一些操作,比如对字符串进行查找与匹配,都会用到哪些方法呢?很多小伙伴对此还有些不解,所以今天这篇文章就带大家一起来学习一下有关“Python如何对文本模式进行匹配?如何使用match()方法进行匹配?“。

如何对Python文本模式进行匹配?如何使用match()方法进行匹配?

假设我们想要对python按照我们指定的一种文本模式进行匹配或查找,解决方法举例向大家进行解释,如果只是想要匹配简单的文字,通常可以使用最基本的字符串方法就可以实现,比如这个查找

示例:

text='mark ,美女,20,168,漂亮,mark'
print(text=='mark')
print(text.startswith('mark'))
print(text.startswith('mark'))
print(text.find(美女'))

结果:

False
True
True
6

以上就是一个简单的对字符串进行查找,使用的是函数,比如str.find()可以查找整个字符串中包含的字符串进行统计、str.endswith()字符串的结束字符、str.startswith()一个字符串中,开头的字符。

如果你想要对其他字符串进行复杂的匹配,这里就需要用到正则表达式或者是Re模块了,为了更好的讲解正则表达式的使用流程,我们这里通过举例匹配用一个数字构成的日期,实例如下:

import re
text1='8/1/2022'
text2='Nov 1, 2022'
if re.match(r'\d+/\d+/\d+',text1):
  print('符合模型:数字/数字/数字')
else:
  print('不符合模型:数字/数字/数字')
if re.match(r'\d+/\d+/\d+',text2):
  print('符合模型:数字/数字/数字')
else:
  print('不符合模型:数字/数字/数字')
运行结果:
符合模型:数字/数字/数字
不符合模型:数字/数字/数字

如果打算针对同一模型做多次匹配,那么通常会先将正则表达式模式预编译成一个模式对象。

例如:

import re
text1='8/1/2022'
text2='Nov 1, 2022'
datepat=re.compile(r'\d+/\d+/\d+')
if datepat.match(text1):
  print('符合模型:数字/数字/数字')
else:
  print('不符合模型:数字/数字/数字')
if datepat.match(text2):
  print('符合模型:数字/数字/数字')
else:
  print('不符合模型:数字/数字/数字')
结果:
符合模型:数字/数字/数字
不符合模型:数字/数字/数字

match()方法总是尝试在字符串的开头找到匹配项。如果想针对整个文本搜索出所有的匹配项,那么就应该使用findall()方法,例如:

import re
text='今天是 8/1/2022,昨天是7/31/2022'
datepat=re.compile(r'\d+/\d+/\d+')
print(datepat.findall(text))
运行结果:
['8/1/2022', '7/31/2022']

这篇主要介绍了re模块对文本匹配和搜索的基本功能,首先用re.compile()对模式进行编译,然后使用想match()、findall()这样的方法做匹配和搜索。以上所述是我给大家介绍的如何对Python文本模式进行匹配?如何使用match()方法进行匹配?希望对大家有所帮助,如果大家有任何疑问可以继续关注哦!

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。