个人技术分享

引言

正则表达式(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:非单词边界。

字符集

  • []:定义一个字符集,匹配其中的任意单个字符。
  • [^]:取反,匹配不在字符集中的任意单个字符。

正则表达式语法规则

正则表达式的语法规则是构建有效正则表达式的基础。以下是一些常见的语法规则:

  1. 组合:使用|来表示“或”,例如ab|cd可以匹配“ab”或“cd”。
  2. 分组:使用圆括号()来创建子表达式,允许对正则表达式的部分进行分组。
  3. 量词:使用量词来指定模式出现的次数。
  4. 转义特殊字符:使用反斜线\来转义特殊字符,使其作为普通字符匹配。

代码示例

以下是一些使用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']