# 正则表达式语法参考

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

本节简要概述了 [正则表达式语法](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)，可用于创建 [搜索和替换](tutorial-finding-and-replacing-text-using-regular-expressions.html) 以及问题导航模式。

![正则表达式示例](https://resources.jetbrains.com/help/img/idea/2026.3/regex_sample_syntax.png)

## 正则表达式语法参考

|  字符  |  描述  |
| --- | --- |
|   `\`   |     将下一个字符标记为特殊字符或字面量。 例如：        * `n` 匹配字符 `n` 。 `\n` 匹配换行字符。    * 序列 `\\` 匹配 `\` ， `\(` 匹配 `(` 。    |
|   `^`   |  匹配输入的开头。  |
|   `$`   |  匹配输入的结尾。  |
|   `*`   |  匹配前面的字符零次或多次。 例如，  `zo*`  可匹配  `z`  或  `zoo` 。  |
|   `+`   |  匹配前面的字符一次或多次。 例如，  `zo+`  匹配  `zoo` ，但不匹配  `z` 。  |
|   `?`   |  匹配前一个字符零次或一次。 例如，  `a?ve?`  与  `ve`  在  `从未`  中匹配。  |
|   `。`   |  匹配除换行符以外的任何单个字符。  |
|   `(`  子表达式  `)`   |     匹配  子表达式 并记住匹配。 如果正则表达式的一部分用圆括号括起来，则正则表达式的那一部分将被分组在一起。 因此，正则表达式运算符可以应用于整个组。        * 如果您需要在同一正则表达式中使用匹配的子字符串，您可以使用反向引用 `\num` 来检索它，其中 `num = 1..n` 。    * 如果您需要在当前正则表达式之外的某处引用匹配的子字符串（例如，在另一个正则表达式中作为替换字符串），可以使用美元符号 `$num` 来检索它，其中 `num = 1..n` 。    * 如果您需要将括号字符包含在 子表达式 中，请使用 `\(` 或 `\)` 。    |
|   `x\|y`   |  匹配  `x`  或  `年` 。 例如，  `z\|wood`  匹配  `z`  或  `wood` 。  `(z\|w)oo`  匹配  `zoo`  或  `wood` 。  |
|   `{n}`   |   `n`  是非负整数。  精确 匹配  `n`  次。 例如，  `o{2}`  不匹配  `Bob`  中的  `o` ，但匹配  `foooood`  中前两个 o。  |
|   `{n,}`   |      `n`  是非负整数。 匹配  至少   `n`  次。       例如，  `o{2,}`  不匹配  Bob  中的  o ，但匹配  `food`  中的所有 o。        `o{1,}`  相当于  `o+` 。  `o{0,}`  等同于  `o*` 。     |
|   `{n,m}`   |   `m`  和  `n`  为非负整数。 匹配  至少   n  和  最多   m  次。 例如，  `o{1,3}`  可匹配  `food`  中前三个字母 o。  `o{0,1}`  等同于  `o?` 。  |
|   `[xyz]`   |  字符集。 匹配括号中任何一个字符。 例如，  `[abc]`  匹配  `plain`  中的  `a` 。  |
|   `[^xyz]`   |  负字符组。 匹配未包含的任何字符。 例如，  `[^abc]`  匹配  `plain`  中的  `p` 。  |
|   `[a-z]`   |  一系列字符。 匹配指定范围内的任意字符。 例如，  `[a-z]`  可匹配从  `a`  到  z  范围内的任意小写字母。  |
|   `[^m-z]`   |  字符的否定范围。 匹配不在指定范围内的任意字符。 例如，  `[^m-z]`  匹配不在  `m`  到  `z`  范围内的任意字符。  |
|   `\b`   |  匹配单词和空格之间的边界。 例如，  `er\b`  匹配  `从未`  中的  `er` ，但不匹配  `verb`  中的  `er` 。  |
|   `\B`   |  匹配非单词边界。  `ea*r\B`  匹配  `never early`  中的  `ear` 。  |
|   `\d`   |  匹配一个数字字符。 等同于  `[0-9]` 。  |
|   `\D`   |  匹配非数字字符。 等同于  `[^0-9]` 。  |
|   `\f`   |  匹配换页符。  |
|   `\n`   |  匹配换行符。  |
|   `\r`   |  匹配回车字符。  |
|   `\s`   |  匹配任意空白字符，包括 Space、制表符、换页符等。 等同于  `[ \f\n\r\t\v]` 。  |
|   `\S`   |  匹配任何非空白字符。 等同于  `[^ \f\n\r\t\v]` 。  |
|   `\t`   |  匹配制表符字符。  |
|   `\v`   |  匹配垂直制表符字符。  |
|   `\w`   |  匹配任何单词字符，包括下划线。 等同于  `[A-Za-z0-9_]` 。 在查找字段中使用它。  |
|   `\W`   |  匹配任何非单词字符。 等同于  `[^A-Za-z0-9_]` 。  |
|   `\num`   |     匹配  `num` ，其中  `num`  为正整数，表示对已记住匹配的引用。       例如，  `(.)\1`  匹配两个连续相同的字符。     |
|   `\n`   |  匹配  `n` ，其中  `n`  为八进制转义值。 八进制转义值的长度应为 1、2 或 3 个数字。    例如，  `\11` 和  `\011` 都匹配制表符。        `\0011`  等价于  `\001`  &  1 。       八进制转义值不应超过 256。 如果是这样，表达式仅由前两位数字组成。 允许在正则表达式中使用 ASCII 代码。     |
|   `\xn`   |     匹配  `n` ，其中  `n`  为十六进制转义值。 十六进制转义值必须恰好为两位数。       例如，  `\x41`  匹配  `A` 。  `\x041`  等同于  `\x04`  &  `1` 。       允许在正则表达式中使用 ASCII 代码。     |
|   `\$`   |  找到一个  `$` 字符。  |
|   `\\$`   |  在查找字段中使用此正则表达式表示 您 正在尝试在行尾查找一个  `\`  字符。  |
|   `\l`   |  将下一个字符转换为小写。 在替换字段中使用此类正则表达式。  |
|   `\u`   |  将下一个字符转换为大写。 在替换字段中使用此类正则表达式。  |
|   `\L`   |  将  `\E` 以前所有后续字符的大小写改为小写。 在替换字段中使用此类正则表达式。  |
|   `\U`   |  将  `\E` 以前所有后续字符的大小写改为大写。 在替换字段中使用此类正则表达式。  |
|   `(?!)`   |  这是用于负向先行断言的模式。 例如，  `A(?!B)`  表示 IntelliJ IDEA 会搜索  `A` ，但仅当其后不跟随  `B`  时。  |
|   `(?=)`   |  这是用于正向先行断言的模式。 例如，  `A(?=B)`  意味着 IntelliJ IDEA 将搜索  `A` ，但仅在后面紧跟  `B`  时匹配。  |
|   `(?<=)`   |  这是用于正向后行断言的模式。 例如，  `(?<=B)A`  表示 IntelliJ IDEA 将搜索  `A` ，但仅当在它之前有  `B`  时。  |
|   `(?<!)`   |  这是用于负向后行断言的模式。 例如，  `(?<!B)A`  表示 IntelliJ IDEA 将会搜索  `A` ，但前提是没有  `B`  出现在它前面。  |

由于 IntelliJ IDEA 支持所有标准的正则表达式语法，您可以查看 [https://www.regular-expressions.info](https://www.regular-expressions.info) 了解更多关于语法的信息。

## 提示和技巧

IntelliJ IDEA 提供意图操作，可用于 [检查正则表达式的有效性](null)、解释和编辑正则表达式。 将文本光标放在正则表达式处，然后按 `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Alt+Enter` (NetBeans), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS))。 在此上下文中可用的意图操作建议列表会显示出来。

![上下文菜单意图](https://resources.jetbrains.com/help/img/idea/2026.3/regexp_intention_actions.png)

* 请选择 检查 RegExp 并按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。 弹出的对话框在上窗格中显示当前正则表达式。 在下方窗口中输入此表达式应匹配的字符串。 如果正则表达式与输入的字符串匹配，IntelliJ IDEA 将在该正则表达式旁显示一个绿色的勾号。 如果正则表达式不匹配，则会显示 ![错误图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.debugger.db_obsolete.svg)。 ![一个包含当前正则表达式的对话框](https://resources.jetbrains.com/help/img/idea/2026.3/check_regexp1.png)

* 请选择 解释正则表达式 并按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。 这会打开一个工具提示，说明文本必须符合哪些条件才能匹配该正则表达式。 ![一个包含当前正则表达式的对话框](https://resources.jetbrains.com/help/img/idea/2026.3/explain_regexp_action.png) 每行显示以下信息： 1. 该行说明的正则表达式片段。 如果片段的一部分显示为灰色，则它有对应的单独一行，可通过点击 ![片段左侧箭头的图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.general.chevronRight.svg) 查看。 2. 片段中使用的正则表达式功能的名称（如果适用）。 它以超链接形式指向 [Regular-Expressions.info](https://www.regular-expressions.info/) 上的相应文章。 3. 文本为匹配该片段而必须符合的条件。 > **Tip:** > 如果拥有有效的 [JetBrains AI](ai-assistant-in-jetbrains-ides.html) 许可证，也可以通过选择 `![AI Assistant 图标](https://resources.jetbrains.com/help/img/idea/2026.3/fullLine.icons.previous.aiAssistantColored.svg)AI 操作…… | 解释 RegExp 片段` 调用 AI 驱动的解释。

* 请选择 编辑 RegExp 片段 并按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。 正则表达式会在编辑器中的单独拆分选项卡中打开，以便编辑。 请注意，这只是一个便笺，没有实际创建文件： ![一个包含当前正则表达式的暂存文件](https://resources.jetbrains.com/help/img/idea/2026.3/edit_regexp.png) ![一个包含当前正则表达式的暂存文件](https://resources.jetbrains.com/help/img/idea/2026.3/py_edit_regexp.png) 在临时记录中键入时，所有更改都会与原始正则表达式同步。 要关闭 scratchpad，请按 `Ctrl+F4` (Windows), `⌘ W` (macOS), `⌘ F4` (IntelliJ IDEA Classic (macOS)), `⌘ W` (macOS System Shortcuts), `Ctrl+F4` (XWin), `Ctrl+F4` (GNOME), `Ctrl+4` (KDE), `Ctrl+F4` (Emacs), `Ctrl+F4` (Sublime Text), `⌘ W` (Sublime Text (macOS)), `Ctrl+F4` (Visual Studio), `⌘ F4` (Visual Studio (macOS)), `Ctrl+F4` (NetBeans), `Ctrl+F4` (Eclipse), `⌘ W` (Eclipse (macOS))。

## See also

### 参考

[在文件中搜索目标](finding-and-replacing-text-in-file.html) [版本控制设置](settings-version-control.html)

### 外部链接

[Regex Tutorial](http://www.regular-expressions.info/)

