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

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

 

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

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

换句话说。

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

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

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

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

 

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。

 

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


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

相关文章
|
6月前
|
Shell Linux
熟练使用正则表达式(1)
熟练使用正则表达式。
46 2
|
3月前
|
大数据 程序员
为什么要学正则表达式 - 1
为什么要学正则表达式 - 1
18 1
|
3月前
为什么要学正则表达式 - 2
为什么要学正则表达式 - 2
17 1
|
3月前
|
Python
为什么要学正则表达式 - 4
为什么要学正则表达式 - 4
19 0
|
3月前
为什么要学正则表达式 - 3
为什么要学正则表达式 - 3
16 0
|
5月前
|
程序员
程序员必知:常用正则表达式
程序员必知:常用正则表达式
26 0
|
6月前
|
Shell
熟练使用正则表达式(2)
熟练使用正则表达式。
38 2
 熟练使用正则表达式(2)
|
6月前
|
数据采集 自然语言处理 监控
正则表达式相关知识点
正则表达式相关知识点
64 0
|
移动开发 C语言
编译原理(八) 之 正则表达式
编译原理(八) 之 正则表达式
204 0
|
Python
正则表达式(面试会考)
正则表达式(面试会考)
179 0
正则表达式(面试会考)