正则表达式语法与常用功能


发布日期 : 2023-06-23 22:49:55 UTC

访问量: 10 次浏览

正则表达式

正则表达式(Regular Expression)是一个强大的工具,它可以用于字符串的模式匹配、验证、搜索和替换等操作。
在很多编程语言中,都内置了对正则表达式的支持。这篇文章将介绍正则表达式的基础语法和常用功能。

基础语法

正则表达式由字符和操作符构成,其中字符表示要匹配的内容,操作符表示匹配字符的方式。
下面是一些常用的正则表达式字符和操作符:

  • 字符:
字符描述
a-z匹配小写字母 a 到 z 中的任意一个
A-Z匹配大写字母 A 到 Z 中的任意一个
0-9匹配数字 0 到 9 中的任意一个
.匹配除换行符外的任意字符
\转义字符,用于匹配特殊字符(如 . \ ? * 等)
  • 操作符:
操作符描述
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
{m}匹配前面的字符恰好 m 次
{m,}匹配前面的字符至少 m 次
{m,n}匹配前面的字符至少 m 次,但不超过 n 次
^匹配字符串的开头
$匹配字符串的结尾
[…]匹配方括号内的任意一个字符
[^…]匹配不在方括号内的任意一个字符
(…)将括号内的字符作为一个分组

常用功能

匹配

匹配是正则表达式最基本的功能。它用于判断一个字符串是否符合某种规则。
下面是一个简单的示例代码,它使用正则表达式匹配是否为有效的邮箱地址。

import re

email = input("请输入邮箱地址:")
pattern = r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'

if re.match(pattern, email):
print("{} 是有效的邮箱地址。".format(email))
else:
print("{} 不是有效的邮箱地址。".format(email))

该示例代码使用了 re 模块中的 match 函数来进行匹配。其中,r 表示原始字符串,用于防止字符串中的反斜杠字符被转义。
pattern 是正则表达式模式,它用于匹配邮箱地址的规则。^ 表示字符串的开头,$ 表示字符串的结尾,+ 表示前面的字符匹配一次或多次,\ 表示转义字符,用于匹配特殊字符,如 . _ – 等。

搜索

搜索是正则表达式中的一种功能。它用于查找符合某种规则的字符串。
下面是一个简单的示例代码,它使用正则表达式搜索文件中的所有手机号码。

import re

with open("file.txt", "r") as f:
content = f.read()

pattern = r'\d{11}'

result = re.findall(pattern, content)
print("文件中的手机号码为:", result)

该示例代码使用了 re 模块中的 findall 函数来进行搜索。
其中,r 表示原始字符串,用于防止字符串中的反斜杠字符被转义。
pattern 是正则表达式模式,它用于匹配手机号码的规则,\d 表示匹配数字,{11} 表示匹配前面的字符恰好 11 次。
content 是文件内容,通过 read 函数读取出来的字符串。result 是一个列表,它包含了搜索到的所有手机号码。

替换

替换是正则表达式的一种功能,它用于将字符串中符合某种规则的部分替换为指定的文本。
下面是一个简单的示例代码,它使用正则表达式将所有数字替换为“#”。

import re

text = "There are 1234567890 numbers in this text."
pattern = r'\d'

result = re.sub(pattern, '#', text)
print(result)

该示例代码使用了 re 模块中的 sub 函数来进行替换。其中,r 表示原始字符串,用于防止字符串中的反斜杠字符被转义。
pattern 是正则表达式模式,它用于匹配数字的规则,\d 表示匹配数字。
text 是待替换的字符串,result 是替换后的字符串,其中所有数字都被替换为了“#”。

分组与引用

分组是正则表达式中的一种功能,它用于将多个字符分为一个整体进行匹配。
下面是一个简单的示例代码,它使用正则表达式分组匹配邮箱地址的用户名和域名。

import re

email = "example@mail.com"
pattern = r'(\w+)@(\w+\.\w+)'

result = re.match(pattern, email)
if result:
print("用户名:", result.group(1))
print("域名:", result.group(2))

该示例代码使用了 re 模块中的 match 函数来进行匹配。其中,r 表示原始字符串,用于防止字符串中的反斜杠字符被转义。
pattern 是正则表达式模式,它用于匹配邮箱地址的规则。(\w+) 表示匹配邮箱地址的用户名,(\w+.\w+) 表示匹配邮箱地址的域名。
result 是一个 Match 对象,它包含了匹配到的结果。result.group(1) 返回用户名,result.group(2) 返回域名。

引用是正则表达式中的一种功能,它用于再次使用之前分组匹配到的内容。下面是一个简单的示例代码,它使用正则表达式替换字符串中重复出现的单词。

import re

text = "I love love programming programming."
pattern = r'(\b\w+\b)\s+\1'

result = re.sub(pattern, r'\1', text)
print(result)

该示例代码使用了 re 模块中的 sub 函数来进行替换。其中,r 表示原始字符串,用于防止字符串中的反斜杠字符被转义。
pattern 是正则表达式模式,它用于匹配重复出现的单词。(\b\w+\b) 表示匹配单词,\s+ 表示匹配一个或多个空格,\1 表示引用之前匹配到的单词。
text 是待替换的字符串,result 是替换后的字符串,其中重复出现的单词被替换为了一次出现的单词。

结论

正则表达式是一个强大的工具,它可以用于字符串的模式匹配、验证、搜索和替换等操作。
在Python中,我们可以使用 re 模块来进行正则表达式的处理。本文介绍了正则表达式的基础语法和常用功能,包括匹配、搜索、替换、分组和引用等。
通过学习本文,我们可以掌握正则表达式的基本使用,为以后的开发工作打下坚实的基础。