正则表达式核心使用指南
正则表达式是用于匹配和处理文本的强大工具。下面将从基础到高级讲解核心使用方法。
1. 基础语法
字符匹配
a # 匹配字母 "a"
123 # 匹配数字 "123"
\\ # 匹配反斜杠 (需要转义)
\. # 匹配点号 (需要转义)
特殊字符
. # 匹配任意单个字符(除了换行符)
\d # 匹配数字 [0-9]
\w # 匹配单词字符 [a-zA-Z0-9_]
\s # 匹配空白字符 (空格、制表符、换行等)
\D # 匹配非数字 [^0-9]
\W # 匹配非单词字符 [^a-zA-Z0-9_]
\S # 匹配非空白字符
2. 量词 - 控制匹配次数
a? # 匹配 0 或 1 次 (可选)
a* # 匹配 0 次或多次
a+ # 匹配 1 次或多次
a{3} # 匹配恰好 3 次
a{3,} # 匹配 3 次或更多
a{3,5} # 匹配 3 到 5 次
3. 位置锚点
^ # 字符串开始
$ # 字符串结束
\b # 单词边界
\B # 非单词边界
4. 字符集合
[abc] # 匹配 a、b 或 c 中的任意一个
[^abc] # 匹配除了 a、b、c 的任意字符
[a-z] # 匹配 a 到 z 的任意小写字母
[0-9] # 匹配 0 到 9 的数字
5. 分组和捕获
(abc) # 捕获分组
(?:abc) # 非捕获分组
a|b # 匹配 a 或 b
(?<name>abc) # 命名捕获分组 (别名: (?P<name>abc))
6. 断言(零宽断言)
(?=abc) # 正向先行断言 (后面是 abc)
(?!abc) # 负向先行断言 (后面不是 abc)
(?<=abc) # 正向后行断言 (前面是 abc)
(?<!abc) # 负向后行断言 (前面不是 abc)
7. 实用示例
邮箱验证
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL 提取
https?://[^\s/$.?#].[^\s]*
日期匹配 (YYYY-MM-DD)
\d{4}-\d{2}-\d{2}
提取HTML标签内容
<([a-z][a-z0-9]*)[^>]*>(.*?)</\1>
强密码验证
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
8. 修饰符/标志
i # 忽略大小写
g # 全局匹配
m # 多行模式 (^和$匹配每行的开始和结束)
s # 单行模式 (.匹配换行符)
9. 回溯引用
(abc|def)\1 # 引用第一个捕获组的内容
(?<name>abc)\k<name> # 引用命名捕获组
10. 贪婪 vs 非贪婪
.* # 贪婪匹配 (尽可能多匹配)
.*? # 非贪婪匹配 (尽可能少匹配)
实战技巧
- 测试工具: 使用在线工具如 regex101.com 测试你的正则表达式
- 性能: 避免嵌套量词和过于复杂的回溯
- 可读性: 复杂正则表达式使用
x标志和注释 - 转义: 在代码中使用时注意特殊字符的转义
掌握这些核心概念后,你就能解决大部分文本处理需求。记住:实践是最好的学习方法!
正则表达式核心使用指南
9万+

被折叠的 条评论
为什么被折叠?



