返回
屡见不鲜的正则宝典,从此告别正则困扰
前端
2023-10-31 15:38:36
正则表达式是一种强大的文本处理工具,能够根据指定规则对字符串进行匹配。它被广泛应用于编程、数据处理和网络安全等领域。然而,正则表达式也以其晦涩难懂而著称,初学者往往需要花费大量时间才能掌握它的用法。
本文精选了一些最常见的正则表达式,并配以清晰易懂的示例,帮助读者快速掌握正则表达式的基本用法。
1. 元字符
元字符是正则表达式中最重要的组成部分,它代表着特定的含义。下表列出了常用的元字符及其含义:
元字符 | 含义 | 示例 |
---|---|---|
. |
匹配任意单个字符 | a.b 匹配 "abc"、"a1b"、"a@b" 等 |
* |
匹配前面的子表达式零次或多次 | a*b 匹配 "ab"、"aaab"、"aaaab" 等 |
+ |
匹配前面的子表达式一次或多次 | a+b 匹配 "ab"、"aab"、"aaab" 等 |
? |
匹配前面的子表达式零次或一次 | a?b 匹配 "ab"、"b",但不匹配 "aab" |
^ |
匹配字符串的开头 | ^a 匹配 "abc"、"a1b",但不匹配 "bca" |
$ |
匹配字符串的结尾 | a$ 匹配 "abc"、"a1b",但不匹配 "abca" |
2. 字符类
字符类用于匹配一组字符。下表列出了常用的字符类及其含义:
字符类 | 含义 | 示例 |
---|---|---|
[abc] |
匹配字符 "a"、"b" 或 "c" | [abc]at 匹配 "cat"、"bat"、"cab" 等 |
[^abc] |
匹配除字符 "a"、"b" 和 "c" 之外的任何字符 | [^abc]at 匹配 "dot"、"eat"、"fit" 等 |
\d |
匹配数字 | \d+ 匹配 "123"、"456"、"789" 等 |
\w |
匹配字母、数字和下划线 | \w+ 匹配 "abc"、"123"、"a1b2c3" 等 |
\s |
匹配空白字符,包括空格、制表符和换行符 | \s+ 匹配 " "、" "、"\n" 等 |
3. 量词
量词用于指定子表达式的匹配次数。下表列出了常用的量词及其含义:
量词 | 含义 | 示例 |
---|---|---|
* |
匹配前面的子表达式零次或多次 | a*b 匹配 "ab"、"aaab"、"aaaab" 等 |
+ |
匹配前面的子表达式一次或多次 | a+b 匹配 "ab"、"aab"、"aaab" 等 |
? |
匹配前面的子表达式零次或一次 | a?b 匹配 "ab"、"b",但不匹配 "aab" |
{n} |
匹配前面的子表达式恰好 n 次 | a{2}b 匹配 "aab",但不匹配 "ab" 或 "aaab" |
{n,} |
匹配前面的子表达式至少 n 次 | a{2,}b 匹配 "aab"、"aaab" 等,但不匹配 "ab" |
{n,m} |
匹配前面的子表达式至少 n 次,但至多 m 次 | a{2,4}b 匹配 "aab"、"aaab"、"aaaab" 等,但不匹配 "ab" 或 "aaaaaab" |
4. 分组
分组用于将正则表达式划分为子表达式。子表达式可以被单独引用和修改。下表列出了常用的分组语法:
语法 | 含义 | 示例 |
---|---|---|
() |
将子表达式分组 | `(a |
(?:) |
将子表达式分组,但不捕获匹配结果 | `(?:a |
(?<name>) |
将子表达式分组并捕获匹配结果,其中 "name" 是捕获组的名称 | `(? |
5. 替换
正则表达式还可以用于替换匹配到的字符串。下表列出了常用的替换语法:
语法 | 含义 | 示例 |
---|---|---|
s/old/new/ |
将字符串中的 "old" 替换为 "new" | s/abc/xyz/ 将 "abc" 替换为 "xyz" |
s/old/new/g |
将字符串中的所有 "old" 替换为 "new" | s/abc/xyz/g 将 "abc"、"abcabc" 替换为 "xyzxyz" |
s/old/new/i |
将字符串中的 "old" 替换为 "new",忽略大小写 | s/abc/xyz/i 将 "abc"、"ABC" 替换为 "xyz" |
6. 实例
下表列出了几个正则表达式实例,以帮助读者更好地理解正则表达式的用法:
正则表达式 | 匹配内容 | 示例 |
---|---|---|
^a |
以字母 "a" 开头的字符串 | "abc"、"a1b" 等 |
b$ |
以字母 "b" 结尾的字符串 | "abc"、"b1c" 等 |
a.b |
由字母 "a"、一个任意字符和字母 "b" 组成的字符串 | "abc"、"a1b" 等 |
a*b |
由字母 "a"(零次或多次)和字母 "b" 组成的字符串 | "ab"、"aaab"、"aaaab" 等 |
a+b |
由字母 "a"(一次或多次)和字母 "b" 组成的字符串 | "ab"、"aab"、"aaab" 等 |
a?b |
由字母 "a"(零次或一次)和字母 "b" 组成的字符串 | "ab"、"b" |
[abc]at |
由字母 "a"、"b" 或 "c" 开头,以字母 "t" 结尾的字符串 | "cat"、"bat"、"cab" 等 |
[^abc]at |
由除字母 "a"、"b" 和 "c" 之外的任何字符开头,以字母 "t" 结尾的字符串 | "dot"、"eat"、"fit" 等 |
\d+ |
由一个或多个数字组成的字符串 | "123"、"456"、"789" 等 |
\w+ |
由一个或多个字母、数字或下划线组成的字符串 | "abc"、"123"、"a1b2c3" 等 |
\s+ |
由一个或多个空白字符组成的字符串 | " "、" "、"\n" 等 |
希望这篇文章能够帮助读者快速掌握正则表达式的基本用法。