为什么要学正则表达式 - 5

为什么要学正则表达式 - 5

在处理正字符串的时候,经常会有一些复杂规则的字符串需求,

正则表表达式就是描述这些规则的公工具。

换句话说。

正则表达式就是记录文本规则的代码。

前几期讲了正则表表达式的一些概念,让我们具备正则表达式初步的印象,在python中使用re模块匹配字符串有match(),search(),findall()等方法。

今天我们首先来看看match()方法的使用。

使用match()方法匹配字符串

为什么要学正则表达式 - 5

match()方法用于从字符串的开始处进行匹配,如果在起始位置匹配成功。则返回Match()对象,否则则返回None。

它的语法格式如下:

re.match(pattern, strings, [flags])

参数:

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

strings:表示需要匹配的字符串

flags:选择参数,用于控制匹配方式。如是否区分字母大小写等。

flags的参数一般如下:

re.I IGNORECASE, 忽略大小写的匹配模式

re.M MULTILINE, 使用本标志后,‘^’和‘$’匹配行首和行尾时,会增加换行符之前和之后的位置。

re.S  DOTALL,此模式下 '.' 的匹配不受限制,可匹配任何字符,

包括换行符,也就是默认是不能匹配换行符

re.X VERBOSE,冗余模式, 此模式忽略正则表达式中的空白

和#号的注释

接下来咱们来看一组实例:

pattern = r'si\w+'  #匹配字符串规则
string = 'Sixty school students seeing surprising sun snow scream, shout simultaneously'  #要进行匹配的字符串
match_obj = re.match(pattern, string, re.I)   #按照不区分大小写的方式进行匹配
print(match_obj)
#<re.Match object; span=(0, 5), match='Sixty'>

string = r'学生Sixty school students seeing surprising sun snow scream, shout simultaneously'
match_obj = re.match(pattern, string, re.I)   #按照不区分大小写的方式进行匹配
print(match_obj)
#None

从上面的执行结果可以看出,字符串‘Sixty school students seeing surprising sun snow scream, shout simultaneously’是以si开头的,所以返回的是一个Match对象。

而下面的字符串'学生Sixty school students seeing surprising sun snow scream, shout simultaneously'不是以si开头的,所以返回的是None。

原因在上面已经说过了,因为match()方法从字符串的起始位置就开始匹配,如果第一个字符就不符合条件的话,就不再继续往下进行匹配,直接返回None。

为什么要学正则表达式 - 5

Match对象中匹配值的位置和数据。当要获得匹配值的起始位置时可以使用Match对象的start()方法,同样当要获得匹配值的结束位置时可以使用Match对象的end()方法;

通过span()方法可以返回匹配位置的元组,通过string可以回去要匹配的字符串。

string = 'Sixty school students seeing surprising sun snow scream, shout simultaneously'  #要进行匹配的字符串
match_obj = re.match(pattern, string, re.I)   #按照不区分大小写的方式进行匹配
print('匹配值的起始位置', match_obj.start())
print('匹配值的结束位置', match_obj.end())
print('匹配位置的元组', match_obj.span())
print('要匹配的字符串', match_obj.string)
print('匹配数据', match_obj.group())

#匹配值的起始位置 0
#匹配值的结束位置 5
#匹配位置的元组 (0, 5)
#要匹配的字符串 Sixty school students seeing surprising sun snow scream, shout simultaneously
#匹配数据 Sixty

这个实例是不是让你对上面所述概念有了一个更加清晰的认知呢?

为什么要学正则表达式 - 5

好了今天就到此为止了,明天咱们继续研究re模块的search()方法在python中的具体使用方法!

猜你喜欢

转载自blog.csdn.net/qq_36807888/article/details/107775514