引言
正则表达式(Regular Expression),在编程语言中通常缩写为regex或regexp,是一种用于字符串搜索和操作的模式描述方法。它通过定义一系列的规则来匹配、查找和管理文本数据。无论是数据清洗、格式转换还是自动化测试,正则表达式都扮演着不可或缺的角色。
正则表达式在线校验网站: https://tool.oschina.net/regex/
正则表达式基础
在介绍正则表达式之前,我们需要了解一些基本的组成元素:
特殊字符
- 任意字符:
.
匹配除换行符之外的任意单个字符。 - 任意数字:
\d
等同于[0-9]
,匹配任意一个数字字符。 - 任意非数字:
\D
等同于[^0-9]
,匹配任意一个非数字字符。 - 任意字母:
[a-z]
匹配任意一个英文小写字母。 - 任意非字母:
[^a-z]
匹配任意一个非英文小写字母的字符。
量词
*
:出现0次或多次。+
:出现1次或多次。?
:出现0次或1次。{n}
:确定出现n次。{n,}
:至少出现n次。{n,m}
:出现n到m次。
位置锚点
^
:行的开头。$
:行的结尾。
断言
\b
:单词边界。\B
:非单词边界。
字符集
[]
:定义一个字符集,匹配其中的任意单个字符。[^]
:取反,匹配不在字符集中的任意单个字符。
正则表达式语法规则
正则表达式的语法规则是构建有效正则表达式的基础。以下是一些常见的语法规则:
- 组合:使用
|
来表示“或”,例如ab|cd
可以匹配“ab”或“cd”。 - 分组:使用圆括号
()
来创建子表达式,允许对正则表达式的部分进行分组。 - 量词:使用量词来指定模式出现的次数。
- 转义特殊字符:使用反斜线
\
来转义特殊字符,使其作为普通字符匹配。
代码示例
以下是一些使用Python语言的正则表达式示例:
示例1:匹配邮箱地址
import re
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
text = "Please contact me at example@example.com or admin@mailserver.com"
matches = re.findall(email_pattern, text)
print(matches) # 输出: ['example@example.com', 'admin@mailserver.com']
示例2:匹配HTML标签
html_pattern = r'<.*?>'
html_content = "<div>Hello, <a href='#'>world</a></div>"
tags = re.findall(html_pattern, html_content)
print(tags) # 输出: ['<div>Hello, <a href='#'>world</a></div>']
示例3:使用量词匹配电话号码
phone_pattern = r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b'
phone_numbers = "Call me at 123-456-7890 or 123.456.7890"
numbers = re.findall(phone_pattern, phone_numbers)
print(numbers) # 输出: ['123-456-7890', '123.456.7890']