Python/python regex
<languages />
Python正则表达式
RegEx或正则表达式是形成搜索模式的一系列字符。
RegEx可用于检查字符串是否包含指定的搜索模式。
正则表达式模块
Python有一个称为的内置程序包
re
,可用于正则表达式。
导入
re
模块:
import re
Python中的RegEx
导入后
re
模块,您可以开始使用正则表达式:
例
搜索字符串以查看它是否以“ The”开头并以“ Spain”结尾:
import re txt = "The rain in Spain" x = re.search("^The.*Spain$", txt)
正则表达式功能
The
re
模块提供了一组函数,使我们可以在字符串中搜索匹配项:
功能 | 描述 |
---|---|
找到所有 | 返回包含所有匹配项的列表 |
搜索 | 返回一个
如果字符串中的任何地方都有匹配项 |
分裂 | 返回一个列表,该字符串在每次匹配时均已拆分 |
sub | 用字符串替换一个或多个匹配项 |
元字符
元字符是具有特殊含义的字符:
字符 | 描述 | 例 | 试试吧 |
---|---|---|---|
[] | 一组字符 | “[上午]” | 试试吧 ” |
\ | 发出特殊序列的信号(也可以用于转义特殊字符) | “ \ d” | 试试吧 ” |
. | 任何字符(换行符除外) | “他..o” | 试试吧 ” |
^ | 以。。开始 | “ ^你好” | 试试吧 ” |
$ | 以。。结束 | “ world $” | 试试吧 ” |
* | 零次或更多次 | “ aix *” | 试试吧 ” |
+ | 一个或多个事件 | “ aix +” | 试试吧 ” |
{} | 确切指定的出现次数 | “ al {2}” | 试试吧 ” |
两者任一 | 停留” | 试试吧 ” | |
() | 捕获并分组 |
特殊序列
一个特殊的顺序是
\
后跟以下列表中的字符之一,并具有特殊含义:
字符 | 描述 | 例 | 试试吧 |
---|---|---|---|
\A | 如果指定的字符在字符串的开头,则返回匹配项 | “ \ AThe” | 试试吧 ” |
\b | 返回一个匹配项,其中指定字符在单词的开头或结尾 (开头的“ r”是确保该字符串被视为“原始字符串”) |
r“ \ bain” r“ ain \ b” |
试试吧 ” |
\B | 返回存在指定字符的匹配项,但不在单词的开头(或结尾) (开头的“ r”是确保该字符串被视为“原始字符串”) |
r“ \ Bain” r“ ain \ B” |
试试吧 ” |
\d | 返回字符串包含数字(0到9之间的数字)的匹配项 | “ \ d” | 试试吧 ” |
\D | 返回字符串不包含数字的匹配项 | “ \ D” | 试试吧 ” |
\s | 返回字符串包含空格字符的匹配项 | “ \ s” | 试试吧 ” |
\S | 返回字符串不包含空格字符的匹配项 | “ \ S” | 试试吧 ” |
\w | 返回一个匹配项,该字符串包含任何单词字符(从a到Z的字符,0-9的数字和下划线_字符) | “ \ w” | 试试吧 ” |
\W | 返回一个匹配项,其中字符串不包含任何单词字符 | “ \ W” | 试试吧 ” |
\Z | 如果指定的字符位于字符串的末尾,则返回匹配项 | “西班牙\ Z” | 试试吧 ” |
Sets
一组是一对方括号内的一组字符
[]
具有特殊含义:
Set | 描述 | 试试吧 |
---|---|---|
[arn] | 返回一个匹配项,其中指定字符之一(
|
试试吧 ” |
[一个] | 返回任何小写字符的匹配项,按字母顺序
|
试试吧 ” |
[^ arn] | 返回除“”以外的任何字符的匹配项
|
试试吧 ” |
[0123] | 返回匹配项,其中任何指定数字(
|
试试吧 ” |
[0-9] | 返回之间的任何数字匹配
|
试试吧 ” |
[0-5] [0-9] | 返回来自的任何两位数字的匹配项
|
试试吧 ” |
[a-zA-Z] | 返回字母之间的任意字符的匹配项
|
试试吧 ” |
[+] | 在集合中
|
试试吧 ” |
findall()函数
The
findall()
函数返回包含所有匹配项的列表。
例
打印所有匹配项的列表:
import re txt = "The rain in Spain" x = re.findall("ai", txt) print(x)
列表按找到顺序包含匹配项。
如果找不到匹配项,则返回一个空列表:
例
如果找不到匹配项,则返回一个空列表:
import re txt = "The rain in Spain" x = re.findall("Portugal", txt) print(x)
search()函数
The
search()
函数在字符串中搜索匹配项,然后返回
匹配对象
如果有比赛。
如果有多个匹配项,则仅返回匹配项的第一个匹配项:
例
搜索字符串中的第一个空格字符:
import re txt = "The rain in Spain" x = re.search("\s", txt) print("The first white-space character is located in position:", x.start())
如果没有找到匹配的值
None
返回:
例
进行搜索,返回不匹配的内容:
import re txt = "The rain in Spain" x = re.search("Portugal", txt) print(x)
split()函数
The
split()
函数返回一个列表,其中每个匹配项都已将字符串分割开:
例
在每个空格字符处分割:
import re txt = "The rain in Spain" x = re.split("\s", txt) print(x)
您可以通过指定
maxsplit
参数:
例
仅在第一次出现时才拆分字符串:
import re txt = "The rain in Spain" x = re.split("\s", txt, 1) print(x)
sub()函数
The
sub()
函数将匹配项替换为您选择的文本:
例
将每个空白字符替换为数字9:
import re txt = "The rain in Spain" x = re.sub("\s", "9", txt) print(x)
您可以通过指定
count
参数:
例
替换前两个事件:
import re txt = "The rain in Spain" x = re.sub("\s", "9", txt, 2) print(x)
匹配对象
匹配对象是包含有关搜索和结果信息的对象。
注意:
如果不匹配,则该值
None
将返回,而不是Match对象。
例
进行搜索以返回匹配对象:
import re txt = "The rain in Spain" x = re.search("ai", txt) print(x) #this will print an object
Match对象具有用于检索有关搜索信息和结果的属性和方法:
.span()
返回一个元组,其中包含匹配的开始和结束位置。
.string
返回传递给函数的字符串
.group()
返回匹配的字符串部分
例
打印第一个匹配项的位置(开始和结束位置)。
正则表达式查找以大写字母“ S”开头的所有单词:
import re txt = "The rain in Spain" x = re.search(r"\bS\w+", txt) print(x.span())
例
打印传递给函数的字符串:
import re txt = "The rain in Spain" x = re.search(r"\bS\w+", txt) print(x.string)
例
打印匹配的字符串部分。
正则表达式查找以大写字母“ S”开头的所有单词:
import re txt = "The rain in Spain" x = re.search(r"\bS\w+", txt) print(x.group())
注意:
如果不匹配,则该值
None
将返回,而不是Match对象。