正则表达式

正则表达式核心使用指南

正则表达式核心使用指南

正则表达式是用于匹配和处理文本的强大工具。下面将从基础到高级讲解核心使用方法。

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 非贪婪

.*       # 贪婪匹配 (尽可能多匹配)
.*?      # 非贪婪匹配 (尽可能少匹配)

实战技巧

  1. 测试工具: 使用在线工具如 regex101.com 测试你的正则表达式
  2. 性能: 避免嵌套量词和过于复杂的回溯
  3. 可读性: 复杂正则表达式使用 x 标志和注释
  4. 转义: 在代码中使用时注意特殊字符的转义

掌握这些核心概念后,你就能解决大部分文本处理需求。记住:实践是最好的学习方法!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值