发布于 2026-01-06 1 阅读
0

正则表达式速查表

正则表达式速查表

正则表达式是一个强大的工具,有时可以节省大量的代码行数。

什么是正则表达式

正则表达式(Regex)描述了一定长度文本的模式,因此可用于字符串编辑。

在线工具

不确定你的正则表达式是否有效?试试Regex101,它能让你的正则表达式编写变得更加轻松。
我还推荐Regular Expression Info,它解释了你需要了解的所有细节。

速查表

特点 意义 例子
^ 字符串的开头
$ 字符串的结尾
\b 仅整个单词 \babc\b 匹配 'abc',但不匹配 'abcc '
\B 如果图案完全被单词包围 \Babc\B 计算“aabcc”,但不计算“abc”
任何事物
\d 0-9 中的个位数
\D 单个非数字
\w 单个单词字符
\W 单个非词
\s 空格(空格、制表符、回车符、换行符)
\S 非空白字符
\t 标签页
\r 返回
\n 换行
\g 全局搜索,这意味着它不会止步于第一个匹配项。
* 零个或多个前述 abc* 匹配以 ab 开头,后跟零个或多个 c 的字符串。
+ 上述一项或多项 abc+ 匹配以 ab 开头,后跟一个或多个 c 的字符串。
前几个数字中的零个或一个 abc? 匹配一个以 ab 开头,后跟零个或一个 c 的字符串。
?: 非捕获组
X{m} X 的数量 === m
X{m,} m < X 的数量
X{m, n} m < X 的数量 < n
(X | Y) X 或 Y
[...] 该类中的任何角色 [abcd] 匹配包含字符 (a, b, c, d) 之一的字符串。
- 范围 [广告] 同上

速查表中的关键词

锚点(Anchor
)不是一个模式,而是一个位置。
它匹配字符之前、之后或之间的位置。
例如,` ^\n` 是字符串的开头,同时也是行首锚点。

Boundaries
\b是一个单词边界,因为\babc\b它必须与整个单词匹配abc
\B它不是单词边界,因为\Babc\B它意味着包含abc(abcc, eabc) 的任何单词。

量词
Greedy:如果可能,可选项会包含在匹配中。`\langle`?是贪婪量词的典型例子。abc?它可以匹配 `\langle`abc或 `\ ablangle`。:
Lazy如果可能,可选项会排除在匹配之外。`\langle`??是贪婪量词的典型例子,因为abc??只有 `\langle` 才能匹配 `\langle` ab
以下是 Stack Overflow 上的最佳示例 - https://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-of-regular-expressions

非捕获组
?:是指模式不会捕获到该组中。它通常与 `\n` 一起使用.match()。因此,如果您使用 `\n` ?:,则模式将不会被包含在数组中。Stack
Overflow 上的示例 -
https://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group-in-regular-expressions

希望这篇文章对你有帮助❤️

文章来源:https://dev.to/mingyena/regular-expressions-cheat-sheet-4ec3