目录
1. 什么是正则表达式?
正则表达式(Regular Expression,简称 Regex)是一种用于 匹配、搜索、替换 字符串的强大工具。它广泛应用于 文本处理、数据验证、爬虫开发、日志分析等领域。
例如,验证电子邮件格式的正则表达式:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
2. 正则表达式的基本语法
2.1 元字符(Metacharacters)
元字符用于构建正则表达式的规则,常见的元字符包括:
元字符 | 说明 | 示例 |
---|---|---|
. | 匹配任意单个字符(换行符除外) | a.b 可匹配 acb |
^ | 匹配字符串开头 | ^Hello 仅匹配以 Hello 开头的字符串 |
$ | 匹配字符串结尾 | world$ 仅匹配以 world 结尾的字符串 |
\d | 匹配任何数字(等价于 [0-9] ) | \d{3} 可匹配 123 |
\w | 匹配任何字母、数字或下划线 | \w+ 可匹配 hello_123 |
\s | 匹配空格(包括换行符、制表符) | Hello\sWorld 可匹配 Hello World |
2.2 字符类(Character Classes)
字符类允许匹配 特定类型的字符:
表达式 | 说明 | 示例 |
---|---|---|
[abc] | 匹配 a 、b 或 c | gr[ae]y 可匹配 gray 或 grey |
[^abc] | 匹配 非 a 、b 或 c | [^0-9] 匹配非数字 |
[0-9] | 匹配 数字 0-9 | \d 也可匹配数字 |
[a-z] | 匹配 小写字母 a-z | [A-Z] 匹配大写字母 |
2.3 量词(Quantifiers)
量词用于 指定重复次数:
量词 | 说明 | 示例 |
---|---|---|
* | 匹配 0次或多次 | a* 可匹配 "" 、a 、aaaa |
+ | 匹配 1次或多次 | a+ 可匹配 a 、aaa ,但不匹配 "" |
? | 匹配 0次或1次 | colou?r 可匹配 color 或 colour |
{n} | 匹配 恰好 n 次 | \d{3} 仅匹配 3 位数 |
{n,} | 匹配 至少 n 次 | \d{2,} 匹配 2 位或更多数字 |
{n,m} | 匹配 n 到 m 次 | \d{2,4} 匹配 2 到 4 位数 |
2.4 组和引用(Groups and References)
- 分组
()
:将多个字符视为一个整体,如(ab)+
匹配ababab
。 - 反向引用
\1, \2...
:用于匹配前面匹配到的组,例如(\d{2})\1
可匹配1212
、3434
。
示例:
(\d{2})\1
匹配 1212
、3434
这类重复数字。
3. 常见正则表达式示例
需求 | 正则表达式 | 示例匹配 |
---|---|---|
邮箱匹配 | ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ | user@example.com |
手机号匹配(中国) | ^1[3-9]\d{9}$ | 13812345678 |
IP 地址 | ^(?:\d{1,3}\.){3}\d{1,3}$ | 192.168.1.1 |
日期(YYYY-MM-DD) | ^\d{4}-\d{2}-\d{2}$ | 2025-03-30 |
纯数字 | ^\d+$ | 123456 |
4. 在不同编程语言中使用正则表达式
Python
import re
pattern = r"\d{3}-\d{3}-\d{4}"
text = "My phone number is 123-456-7890."
match = re.search(pattern, text)
if match:
print("匹配成功:", match.group())
JavaScript
let pattern = /\d{3}-\d{3}-\d{4}/;
let text = "My phone number is 123-456-7890.";
let match = text.match(pattern);
console.log("匹配成功:", match[0]);
5. 正则表达式测试工具
6. 参考资料
这篇文章是否符合你的需求?如果需要更详细的案例或某些特定语言的示例,可以告诉我!😊
发表回复