基础语法
正则表达式(Regular
Expression)是一种强大的文本匹配工具,用于在字符串中查找、替换或验证特定的模式。
什么是正则表达式?
正则表达式是由普通字符和特殊字符组成的模式,用于描述字符串的匹配规则。
简单示例:
hello - 匹配字符串 "hello"
\d - 匹配任意数字
[a-z] - 匹配任意小写字母
基本组成
- 普通字符:直接匹配字符本身
- 元字符:具有特殊含义的字符
- 量词:指定匹配次数
- 字符类:匹配一组字符中的任意一个
元字符
元字符是正则表达式中具有特殊含义的字符,需要转义才能匹配字符本身。
量词
量词用于指定匹配的次数。
| 量词 |
含义 |
示例 |
* |
匹配0次或多次 |
a* 匹配 "", "a", "aa", "aaa" |
+ |
匹配1次或多次 |
a+ 匹配 "a", "aa", "aaa" |
? |
匹配0次或1次 |
a? 匹配 "", "a" |
{n} |
匹配n次 |
a{3} 匹配 "aaa" |
{n,} |
匹配n次或更多 |
a{2,} 匹配 "aa", "aaa" |
{n,m} |
匹配n到m次 |
a{2,4} 匹配 "aa", "aaa", "aaaa" |
字符类
字符类用于匹配一组字符中的任意一个。
基本字符类:
[abc] - 匹配 a、b 或 c
[a-z] - 匹配任意小写字母
[A-Z] - 匹配任意大写字母
[0-9] - 匹配任意数字
预定义字符类:
\d - 匹配数字,等同于 [0-9]
\w - 匹配字母、数字、下划线
\s - 匹配空白字符
\D - 匹配非数字
分组
分组用于将多个字符组合成一个整体,并可以捕获匹配的内容。
基本分组:
(abc) - 将 abc 作为一个整体
(abc)+ - 匹配一个或多个 "abc"
捕获组:
(\d{3})-(\d{3})-(\d{4}) -
匹配电话号码并捕获各部分
锚点
锚点用于指定匹配的位置。
行首和行尾:
^start - 匹配行首的 "start"
end$ - 匹配行尾的 "end"
^start.*end$ - 匹配以 "start" 开头、以 "end"
结尾的行
单词边界:
\bword\b - 匹配完整的单词 "word"
标志
标志用于修改正则表达式的匹配行为。
常用标志:
g - 全局匹配(匹配所有结果)
i - 忽略大小写
m - 多行模式
s - 单行模式(. 匹配换行符)
高级技巧
掌握一些高级技巧可以让正则表达式更加强大和高效。
正向先行断言:
\d+(?=px) - 匹配后面跟着 "px" 的数字
负向先行断言:
\d+(?!px) - 匹配后面不跟 "px" 的数字
实战练习
通过实际练习来巩固所学知识。
练习1:邮箱验证
编写正则表达式验证邮箱地址格式。
参考答案:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
练习2:手机号验证
编写正则表达式验证中国大陆手机号。
参考答案:
^1[3-9]\d{9}$
练习3:提取HTML标签
编写正则表达式提取HTML标签。
参考答案:
<(\w+)>.*?</\1>