正则表达式速查表
正则表达式是一个强大的工具,有时可以节省大量的代码行数。
什么是正则表达式
正则表达式(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