一、基本概念
正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换字符串中的特定模式。它通过一系列预定义的语法规则,描述字符串的结构特征,广泛应用于数据验证、文本解析、日志分析、搜索引擎等领域。
二、基础语法(核心元字符与规则)
正则表达式的语法由「普通字符」和「元字符」组成,元字符是具有特殊含义的符号,掌握它们是使用正则的基础。
1. 普通字符
- 直接匹配自身,无特殊含义(如
a、b、1、 空格等)。 - 示例:
abc匹配字符串"abc",123匹配"123"。
2. 核心元字符(按功能分类)
| 元字符 | 功能说明 | 示例 |
|---|---|---|
. |
匹配任意单个字符(默认不匹配换行符 \n,部分语言可通过修饰符改变)。 |
a.b 匹配 "axb"、"a1b"、"a#b"(不匹配 "a\nb")。 |
^ |
匹配字符串开头(多行模式下匹配每行开头)。 | ^hello 匹配 "hello world"(开头是 hello),不匹配 "xhello"。 |
$ |
匹配字符串结尾(多行模式下匹配每行结尾)。 | world$ 匹配 "hello world"(结尾是 world),不匹配 "worldx"。 |
* |
匹配前面的元素 0 次或多次(贪婪匹配:尽可能多匹配)。 | ab* 匹配 "a"、"ab"、"abb"、"abbb"。 |
+ |
匹配前面的元素 1 次或多次(贪婪匹配)。 | ab+ 匹配 "ab"、"abb"(不匹配 "a")。 |
? |
匹配前面的元素 0 次或 1 次(可选匹配)。 | ab? 匹配 "a"、"ab"(不匹配 "abb")。 |
{n} |
匹配前面的元素 恰好 n 次(n 为非负整数)。 | a{3} 匹配 "aaa"(不匹配 "aa"、"aaaa")。 |
{n,} |
匹配前面的元素 至少 n 次(贪婪匹配)。 | a{2,} 匹配 "aa"、"aaa"、"aaaa"。 |
{n,m} |
匹配前面的元素 n 到 m 次(n ≤ m,贪婪匹配)。 | a{2,3} 匹配 "aa"、"aaa"(不匹配 "a"、"aaaa")。 |
| |
逻辑「或」,匹配左边或右边的模式(优先级最低,需用括号提升优先级)。 | ab|cd 匹配 "ab" 或 "cd";a(b|c)d 匹配 "abd"、"acd"。 |
() |
分组:将多个字符视为一个整体,同时捕获匹配结果(可通过反向引用使用)。 | (ab)+ 匹配 "ab"、"abab";(\w+)\s+(\w+) 捕获两个单词(如 "hello world")。 |
\ |
转义字符:取消元字符的特殊含义,或表示预定义字符类(如 \d、\s)。 |
a\.b 匹配 "a.b"(. 作为普通字符);\* 匹配 "*"。 |
[] |
字符类:匹配括号内任意一个字符(支持范围表示,^ 表示否定)。 | [abc] 匹配 "a"、"b"、"c";[^abc] 匹配非 a/b/c 的字符。 |
[-] |
字符类内的范围符:表示连续字符集(如字母、数字范围)。 | [a-z] 匹配小写字母;[0-9] 匹配数字;[a-zA-Z0-9] 匹配字母数字。 |
3. 预定义字符类(简化写法)
为了简化常见的字符匹配,正则提供了预定义的字符类(部分需结合修饰符使用):
| 预定义类 | 等价于 | 功能说明 |
|---|
正则表达式详解与实战

最低0.47元/天 解锁文章
798

被折叠的 条评论
为什么被折叠?



