下面是Python入门教程(二十九)Python的RegEx正则表达式的详细攻略。
什么是正则表达式
正则表达式(Regular Expression,简称 RegEx)是一种用于描述、匹配和处理字符串的强有力的工具。在代码中使用正则表达式可以进行字符串的搜索、替换、分割等操作。
RegEx的基本语法
Python中的正则表达式需要导入re模块,基本的语法格式如下:
import re
pattern = re.compile(r'regular expression')
其中,pattern是一个正则表达式对象,r前缀表示字符串为原生字符串,不需要转义。
RegEx的基本元字符包括:
元字符 | 解释 |
---|---|
. | 匹配任意字符(除了换行符) |
* | 匹配前一个字符的0个或多个 |
+ | 匹配前一个字符的1个或多个 |
? | 匹配前一个字符的0个或1个 |
[ ] | 匹配括号内的任意一个字符 |
^ | 匹配以什么开始 |
$ | 匹配以什么结尾 |
{n} | 匹配前一个字符的n个 |
{n,} | 匹配前一个字符的n个或多个 |
{n,m} | 匹配前一个字符的n个到m个 |
\ | 转义字符 |
\d | 匹配数字 |
\D | 匹配非数字 |
\w | 匹配单词字符,包括字母、数字和下划线 |
\W | 匹配非单词字符 |
\s | 匹配空白符(空格、制表符、换行符等) |
\S | 匹配非空白符 |
RegEx的常用方法
以下是Python中Re库常用的方法:
- match(pattern, string, flags=0):匹配字符串的开头,如果匹配成功,则返回匹配的对象;否则返回None。
- search(pattern, string, flags=0):在字符串中查找匹配,如果匹配成功,则返回匹配的对象;否则返回None。
- findall(pattern, string, flags=0):返回一个匹配结果的列表。
- sub(pattern, repl, string, count=0, flags=0):查找并替换符合条件的字符串。
- split(pattern, string, maxsplit=0, flags=0):分割字符串。
示例说明
假如我们有一个文本文件data.txt,我们可以来看一下如何利用RegEx来进行文本匹配。具体来说,我们可以从文件中匹配所有以“A”开头和“o”结尾的行。代码如下:
import re
# 打开文件
with open('data.txt', 'r', encoding='utf8') as f:
lines = f.readlines()
# 匹配行
for line in lines:
# 去掉行末的换行符
line = line.rstrip('\n')
# 构造正则表达式
pattern = re.compile(r'A.*o$')
match = pattern.search(line)
if match:
print(line)
如果我们希望将文件中的日期格式都替换为“YYYY-MM-DD”这种形式,可以使用sub方法来替换。代码如下:
import re
# 打开文件
with open('data.txt', 'r', encoding='utf8') as f:
lines = f.readlines()
# 匹配并替换
for line in lines:
# 去掉行末的换行符
line = line.rstrip('\n')
# 构造正则表达式
pattern = re.compile(r'(\d{2})/(\d{2})/(\d{4})')
# 进行替换
line = pattern.sub(r'\3-\1-\2', line)
print(line)
以上就是Python入门教程(二十九)Python的RegEx正则表达式的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python入门教程(二十九)Python的RegEx正则表达式 - Python技术站