正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,它允许用户对字符串进行复杂的搜索、匹配和替换操作。正则表达式的核心在于其“特殊符号”,这些符号能够赋予普通字符特殊的力量,使它们能够匹配更广泛的文本模式。以下是对这些特殊符号的详细介绍。
1. 字符类
字符类是正则表达式中最基础的元素,它允许匹配一系列字符中的任意一个。
- [abc]:匹配a、b或c中的任意一个字符。
- [^abc]:匹配除了a、b、c之外的任意一个字符。
- [a-z]:匹配a到z之间的任意一个小写字母。
- [A-Z]:匹配A到Z之间的任意一个大写字母。
- [0-9]:匹配0到9之间的任意一个数字字符。
- [a-zA-Z0-9]:匹配a到z、A到Z或0到9之间的任意一个字符。
2. 限定符
限定符用于指定匹配前面的子表达式出现的次数。
- *****:匹配前面的子表达式零次或多次。
- +:匹配前面的子表达式一次或多次。
- ??:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
- {n}:匹配前面的子表达式恰好n次。
- {n,}:匹配前面的子表达式至少n次。
- {n,m}:匹配前面的子表达式至少n次,至多m次。
3. 分组和选择
分组和选择用于组合字符类和限定符,以及指定匹配模式。
- (abc):将abc作为一个整体进行匹配。
- |:逻辑或操作符,匹配两边的任一表达式。
4. 特殊符号
特殊符号用于匹配特定的位置或字符。
- ^:匹配字符串的开头。
- $:匹配字符串的结尾。
- \b:匹配单词边界。
- \d:匹配任意一个数字,等价于[0-9]。
- \D:匹配非数字字符,等价于[^0-9]。
- \s:匹配任意空白字符,等价于[\f\n\r\t\v]。
- \S:匹配非空白字符,等价于[^ \f\n\r\t\v]。
5. 常见场景的正则表达式示例
以下是一些常见场景中使用的正则表达式示例:
- 验证电子邮件地址:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
- 提取网页中的URL链接:
<a\s+(?:[^>]*?\s+)?href=["'](.*?)["']
- 替换文本中的特定字符:
(\d+) 替换为 新数字
通过掌握这些特殊符号,您将能够轻松地构建复杂的正则表达式,从而在文本处理中发挥巨大的作用。