📌 目录:
1. 匹配规则概述
正则表达式的匹配规则决定了它如何扫描文本并查找符合特定模式的字符串。匹配的方式可以是:
- 完全匹配(整个字符串匹配)
- 部分匹配(匹配子字符串)
- 边界匹配(匹配行首、行尾或单词边界)
- 贪婪或懒惰匹配(匹配尽可能多或尽可能少的字符)
2. 贪婪匹配与懒惰匹配
🔹 贪婪匹配(默认)
正则默认是 贪婪匹配,会尽可能多地匹配字符。
示例 1(贪婪匹配):
".*"
📌 测试字符串:
He said: "Hello World!"
✅ 匹配结果:
"He said: "Hello World!""
⚠ 说明:.*
匹配了 第一个 "
到最后一个 "
之间的所有字符。
🔹 懒惰匹配(使用 ?
限制匹配长度)
懒惰匹配会尽可能少地匹配字符。
示例 2(懒惰匹配):
".*?"
📌 测试字符串:
He said: "Hello World!"
✅ 匹配结果:
"Hello"
⚠ 说明:.*?
只匹配 第一个 "
和下一个 "
之间的字符。
3. 模式匹配规则
🔹 单字符匹配
匹配单个字符,包括普通字符和通配符。
a
✅ 匹配:"a"
❌ 不匹配:"b"
特殊字符匹配:
\.
✅ 匹配 "."
(点号被转义)。
🔹 多字符匹配
使用 量词 控制匹配的字符数。
量词 | 说明 | 示例 |
---|---|---|
* | 0 次或多次 | ab* 匹配 "a" 、"ab" 、"abb" |
+ | 1 次或多次 | ab+ 匹配 "ab" 、"abb" |
? | 0 次或 1 次 | colou?r 匹配 "color" 或 "colour" |
{n} | 恰好 n 次 | \d{3} 匹配 "123" |
{n,} | 至少 n 次 | \d{2,} 匹配 "12" 、"12345" |
{n,m} | n 到 m 次 | \d{2,4} 匹配 "12" 、"1234" |
🔹 边界匹配
用于控制匹配是否在某些特定位置出现。
边界符 | 说明 | 示例 |
---|---|---|
^ | 匹配行首 | ^hello 匹配 "hello world" ,但不匹配 "world hello" |
$ | 匹配行尾 | world$ 匹配 "hello world" ,但不匹配 "world hello" |
\b | 单词边界 | \bword\b 只匹配独立的 "word" |
\B | 非单词边界 | \Bing 匹配 "ringing" ,但不匹配 "ing" |
🔹 分组匹配
括号 ()
用于创建 子表达式,并允许提取匹配内容。
(\d{3})-(\d{4})
✅ 匹配: "123-4567"
✅ 捕获组: "123"
和 "4567"
🔹 回溯匹配
回溯是正则表达式引擎在匹配失败时回退到前一个匹配点的机制。
a.*b
📌 测试字符串:
acbd
✅ 匹配结果: "acb"
(回溯到 "b"
之前的匹配点)
4. 示例解析
正则表达式 | 说明 | 匹配示例 | 不匹配示例 |
---|---|---|---|
a.b | . 代表任意字符 | "acb" , "a1b" | "ab" |
^hello | 以 "hello" 开头 | "hello world" | "world hello" |
world$ | 以 "world" 结尾 | "hello world" | "world hello" |
ab* | b 出现 0 次或多次 | "a" , "ab" , "abb" | "b" |
colou?r | "u" 可选 | "color" , "colour" | "colouur" |
\d{3,5} | 3 到 5 位数字 | "123" , "12345" | "12" , "123456" |
\bcat\b | 精确匹配 "cat" | "the cat is cute" | "category" |
5. 参考资料
🔗 出站链接
🔗 站内链接
这样整理后,你觉得是否符合你的需求?😃
发表回复