摘要:
正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。
一.正则表达式的语法
①行定位符
行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。
^tm # tm equal Tomorrow Moon可以匹配
tm$ # Tomorrow Moon equal tm可以匹配
tm # 两者都可以匹配
②元字符
元字符 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字、下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或者结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
③限制符
限定符 | 说明 | 举例 |
---|---|---|
? | 匹配前面的字符零次或一次 | colou?r ,该表达式可以匹配color和colour |
+ | 匹配前面的字符一次或多次 | go+gle,该表达式可以匹配的范围从gogle到goo...gle |
* | 匹配前面的字符零次或多次 | go*gle,该表达式可以匹配的范围从ggle 到goo...gle |
{n} | 匹配前面的字符n次 | go{2}gle,该表达式只可匹配google |
{n,} | 匹配前面的字符最少n次 | go{2,}gle,该表达式可以匹配的范围从google到goo...gle |
{n,m} | 匹配前面的字符最少n次,最多m次 | employee{0,2},该表达式可以匹配employ、employe和emploee三种情况 |
④字符类
字符类是一种用于匹配指定字符集中的任意单个字符的模式。字符类被定义在方括号 [
和 ]
之内。
-
基本字符类:
-
[abc]
:匹配 "a" 或 "b" 或 "c" 中的任何一个字符。 -
[0-9]
:匹配任何数字(等同于\d
)。
-
-
排除字符类:
-
[^abc]
或[!abc]
:匹配除 "a"、"b" 和 "c" 之外的任何字符。 -
[^0-9]
:匹配任何非数字字符(等同于\D
)。
-
-
预定义字符类:
-
\d
:等同于[0-9]
,匹配任何数字。 -
\D
:等同于[^0-9]
,匹配任何非数字。 -
\w
:匹配任何字母数字字符和下划线(等同于[a-zA-Z0-9_]
)。 -
\W
:匹配任何非字母数字字符和非下划线(等同于[^a-zA-Z0-9_]
)。 -
\s
:匹配任何空白字符(包括空格、制表符、换页符等)。 -
\S
:匹配任何非空白字符。
-
-
特殊字符:
-
如果你想要匹配方括号
[
或]
本身,需要将它们放在字符类的开头或结尾,或者用反斜杠\
转义。 -
其他特殊字符(如点
.
、加号+
、问号?
、星号*
等)在字符类中也失去了特殊意义,可以直接使用。
-
示例
import re
text = "The quick brown fox jumps over the lazy dog 123."
pattern = "[a-z]" # 匹配任何小写字母
matches = re.findall(pattern, text)
print(matches) # 输出所有匹配的小写字母
二.使用re模板实现正则表达式操作
python提供了re模板,用于实现正则表达式的操作。
在使用re模板时,需要先应用import语句将其导入,import re
①匹配字符串
匹配字符串可以使用re模块提供的match()、search()和findall()等方法
(1)match()方法
match()方法用于从字符串的开始处进行匹配,若成功,则返回Match对象,否则返回None。
语法形式:
re.match(pattern,string,[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来。
string:表示要匹配的字符串。
flags:可选参数,表示标志位,用于控制匹配方式。
标志 | 说明 |
---|---|
A或ASCII | 对于\w、\W、\b、\B、\D、\s和\S只进行ASCII匹配 |
I或IGNORECASE | 执行不区分字母大小写的匹配 |
M或MULTITINE | 将^和$用于包括整个字符串的开始和结尾的每一行 |
S或DOTALL | 使用"."字符匹配所有字符,包括换行符号 |
X或VERBOSE | 忽略模式字符串中未转义的空格和注释 |
示例:
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.match(pattern, string, re.I)
print(match)
string = '项目名称MR_SHOP mr_shop'
match = re.match(pattern, string, re.I)
print(match)
(2)search()方法
search()方法用于在整个字符串中搜索第一个要匹配的值,如果在起始位置匹配成功,则返回Match对象,否则返回None。
语法形式:
re.search(pattern,string,[flags])
示例:
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.search(pattern, string, re.I)
print(match)
string = '项目名称MR_SHOP mr_shop'
match = re.search(pattern, string, re.I)
print(match)
注意:从上述例子可以看出,search()方法不仅仅是在字符串的起始位置处进行搜索,还可以在其他位置处搜索有符合的匹配。
(3)findall()方法
findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。
语法形式:
re.findall(pattern,string,[flags])
示例:
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.findall(pattern, string, re.I)
print(match)
string = '项目名称MR_SHOP mr_shop'
match = re.findall(pattern, string)
print(match)
②替换字符串
sub()方法用于实现字符串的替换。
语法形式:
re.sub(pattern,repl,string,count,flags)
示例:
import re
pattern = r'1[34578]\d{9}'
string = '中奖号码为:84978987 联系电话为:13611111111'
result = re.sub(pattern, '1xxxxxxxxxx', string)
print(result)
③使用正则表达式分割字符串
split()方法用于实现根据正则表达式分割字符串,并以列表的形式放回。
语法形式:
re.split(pattern,string,[maxsplit],[flags])
示例:
import re
pattern = r'[?|&]'
url = 'http://www.baidu.com?username="mr&pwd=mrsoft'
result = re.split(pattern, url)
print(result)
标签:字符,匹配,string,re,Python,pattern,正则表达式,使用,match From: https://blog.csdn.net/sys19897976523/article/details/140906560