正则表达式是用于匹配和处理文本的强大工具。
| 元字符 | 名称 | 功能说明 |
|---|---|---|
. | 点号 | 匹配除换行符外的任意单个字符。 |
\d | 数字字符 | 匹配任意一个数字(等价于 [0-9])。 |
\w | 单词字符 | 匹配字母、数字、下划线。 |
\s | 空白字符 | 匹配空格、制表符、换行符等空白符。 |
\b | 单词边界 | 匹配单词的开始或结束位置,不消耗字符。 |
^ | 脱字符 | 匹配字符串的开始位置(或多行模式下的行首)。 |
$ | 美元符 | 匹配字符串的结束位置(或多行模式下的行尾)。 |
* | 星号 | 匹配前面的元素零次或多次(贪婪匹配)。 |
+ | 加号 | 匹配前面的元素一次或多次(贪婪匹配)。 |
? | 问号 | 1. 匹配前面的元素零次或一次。 2. 紧跟在量词( *, +, ?, {n,m})之后时,转换为非贪婪模式。 |
{n,m} | 区间量词 | 匹配前面的元素至少 n次,至多 m次。 |
[abc] | 字符组 | 匹配方括号内的任意一个字符(例如,匹配 a 或 b 或 c)。 |
[^abc] | 排除型字符组 | 匹配不在方括号内的任意一个字符。 |
| **`a | b`** | 选择符 |
( ... ) | 捕获分组 | 1. 将多个元素视为一个整体。 2. 提取匹配的内容以备后续使用。 |
1. 转义字符
元字符在正则表达式中具有特殊含义。如果你需要匹配它们本身(比如匹配一个真实的点号.或问号?或者美元符号$),需要在前面加上反斜杠 \ 进行转义。
例如,要匹配字符串
"index.html",应使用正则表达式"index\.html"。
例如,要匹配字符串"${token}",应使用正则表达式"\${token}"。
2. 贪婪模式与非贪婪模式
量词(*, +, ?, {n,m})默认是贪婪的,它们会匹配尽可能长的字符串。
例如,用
.或者*去匹配"abc"def",它会匹配到整个字符串。
量词 后面加上一个?,就变为非贪婪(或懒惰)模式,匹配尽可能短的字符串。
例如,用
.*?进行去匹配"abc"def",它会在遇到第一个"时就结束匹配,只匹配"abc"部分
使用
- 匹配手机号码
匹配以1开头的11位数字,通常第二位是3、4、5、7、8、9:
^1[3-9]\d{9}$
- 匹配电子邮件地址
一个相对简单的邮箱匹配规则:用户名由单词字符组成,后接
@,然后是网址和域名。^\w+@[a-zA-Z0-9]+(.[A-Za-z]{2,4}){1,2}$
- 提取HTML标签中的内容
假设有字符串
"<title>Hello, World!</title>",想提取标签内的内容"Hello, World!"。可以使用非贪婪匹配:<title>(.*?)</title>。这里使用.*?可以防止匹配到超过第一个</title>的内容。
练习:
1.<img src="test.jpg" width="60px" height="80px">
取出src的值,width的值
取出第一个数字
取出所有数字
2.我的收藏:<span>苹果</span>和<span>香蕉</span>
取出“苹果”和“香蕉”
3.我的收藏:<span></span>和<span>香蕉</span>。
取出“香蕉”