# 使用正则表达式查找和替换文本

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

当您想搜索并替换特定的文本模式时，请使用 [正则表达式](https://www.regular-expressions.info/quickstart.html)。 它们能帮助您进行模式匹配、解析、结果过滤等。 一旦您学会了正则表达式语法，几乎可以在任何语言中使用它。

IDE 使用 Java 正则表达式，这是包含在 IDE 运行所需 JDK 中的正则表达式。 有关模式的更多信息，请参阅 [docs.oracle.com 上的 Class Pattern](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)。 这些表达式大多（但不完全）与 PCRE (Perl Compatible Regular Expressions) 兼容。

![正则表达式图标](https://resources.jetbrains.com/help/img/idea/2026.3/show_regex_java.png)

Procedure:

1. 按 `Ctrl+R` (Windows), `⌘ R` (macOS), `⌘ R` (IntelliJ IDEA Classic (macOS)), `⌘ R` (macOS System Shortcuts), `Ctrl+R` (XWin), `Ctrl+R` (GNOME), `Ctrl+R` (KDE), `Alt+Shift+5` (Emacs), `Ctrl+H` (Sublime Text), `⌘ ⌥ F` (Sublime Text (macOS)), `Ctrl+H` (Visual Studio), `⌃ H` (Visual Studio (macOS)), `Ctrl+H` (NetBeans), `Ctrl+F` (Eclipse), `Ctrl+R` (Eclipse (macOS)) 打开搜索和替换窗格。

> **Note:**
> 如果您需要在多个文件中进行搜索和替换，请按 `Ctrl+Shift+R` (Windows), `⌘ ⇧ R` (macOS), `⌃ ⇧ R` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ R` (macOS System Shortcuts), `Ctrl+Shift+R` (XWin), `Ctrl+Shift+R` (GNOME), `Ctrl+Shift+R` (KDE), `Ctrl+Shift+R` (Emacs), `Ctrl+Shift+R` (Sublime Text), `Ctrl+Shift+R` (Sublime Text (macOS)), `Ctrl+Shift+H` (Visual Studio), `⌘ ⇧ H` (Visual Studio (macOS)), `Ctrl+Shift+H` (NetBeans), `Ctrl+Shift+R` (Eclipse), `Ctrl+Shift+R` (Eclipse (macOS))。 更多信息请参阅 [在项目中搜索并替换目标](finding-and-replacing-text-in-project.html)。

2. 请在顶部字段中输入搜索字符串，在底部字段中输入替换字符串。

![正则表达式搜索和替换字段](https://resources.jetbrains.com/help/img/idea/2026.3/regex_search_and_replace_fields.png)

点击 ![正则表达式图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.inline.regex.svg) 以启用正则表达式。 如果您想检查正则表达式的语法，请将鼠标悬停在 ![正则表达式图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.inline.regex.svg) 上并点击   显示表达式帮助   链接。

3. 当您搜索包含特殊正则表达式符号的文本字符串时，IntelliJ IDEA 会自动在搜索字段中用反斜杠  `\` 转义它们。

> **Note:**
> 请注意，如果先复制（ `Ctrl+C` (Windows), `⌘ C` (macOS), `⌘ C` (IntelliJ IDEA Classic (macOS)), `⌘ C` (macOS System Shortcuts), `Ctrl+C` (XWin), `Ctrl+C` (GNOME), `Ctrl+C` (KDE), `Ctrl+Insert` (Emacs), `Ctrl+C` (Sublime Text), `⌘ C` (Sublime Text (macOS)), `Ctrl+C` (Visual Studio), `⌘ C` (Visual Studio (macOS)), `Ctrl+C` (NetBeans), `Ctrl+C` (Eclipse), `⌘ C` (Eclipse (macOS))）字符串，然后将其粘贴（ `Ctrl+V` (Windows), `⌘ V` (macOS), `⌘ V` (IntelliJ IDEA Classic (macOS)), `⌘ V` (macOS System Shortcuts), `Ctrl+V` (XWin), `Ctrl+V` (GNOME), `Ctrl+V` (KDE), `Shift+Insert` (Emacs), `Ctrl+Shift+V` (Sublime Text), `⌘ ⇧ V` (Sublime Text (macOS)), `Ctrl+V` (Visual Studio), `⌘ V` (Visual Studio (macOS)), `Ctrl+V` (NetBeans), `Ctrl+V` (Eclipse), `⌘ V` (Eclipse (macOS))）到搜索字段中，则不会考虑正则表达式符号。

不过，当您专门搜索诸如  `.[{()\^$|?*+`  这样的元字符时，您需要使用反斜杠  `\`  进行转义，以便它们可以被识别。

例如，如果您需要查找  `。` ，请在搜索字段中键入  `\.` 。

4. IntelliJ IDEA 也可以匹配当您在搜索字段中输入字符范围时的字母大小写。

例如，若想仅搜索大写字符，请在搜索字段中键入以下内容：

```
\b[A-Z]
```

如需搜索和替换更复杂的模式，请使用 [结构化搜索和替换](structural-search-and-replace.html)。

5. 如果在搜索字段中未选择 ![“匹配大小写”图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.inline.matchCase.svg)，IntelliJ IDEA 会搜索小写和大写两者。

选择 ![“匹配大小写”图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.inline.matchCase.svg) 以匹配指定范围的大小写。

![匹配大小写选择的结果](https://resources.jetbrains.com/help/img/idea/2026.3/match_case_regex.png)

6. 当您浏览出现的情况时，IntelliJ IDEA 会显示替换提示，因此您可以在点击   替换  按钮之前查看潜在结果。

![替换提示](https://resources.jetbrains.com/help/img/idea/2026.3/replacement_hints.png)

> **Note:**
> 请参阅 [RegEx 语法](regular-expressions.html)以了解更多详情。

## 使用正则表达式捕获组和反向引用

您可以将正则表达式放在括号内以对其进行分组。 每个组都有一个从 1 开始的编号，所以您可以在替换模式中引用（反向引用）它们。 请注意，组 0 指的是整个正则表达式。 然而，您不仅可以通过数字  `$n` 引用捕获组，还可以通过名称  `${name}` 引用。

例如，对于数字捕获组，请使用以下语法：

查找字段:

```
<h2>(.*?)</h2>

```

替换字段:

```
$1

```

对于命名捕获组，请使用以下语法：

查找字段:

```
<h2>(?<title>.*?)</h2>

```

替换字段:

```
${title}

```

Procedure: 查找并替换捕获组

请考虑以下内容：

```XML
<new instance="ij" category="105" title="Multiline search and replace in the current file"/>
<new instance="ij" category="105" title="Improved search and replace in the current file"/>
<new instance="ij" category="105" title="Regexp shows replacement preview"/>

```

1. 打开搜索和替换窗格 `Ctrl+R` (Windows), `⌘ R` (macOS), `⌘ R` (IntelliJ IDEA Classic (macOS)), `⌘ R` (macOS System Shortcuts), `Ctrl+R` (XWin), `Ctrl+R` (GNOME), `Ctrl+R` (KDE), `Alt+Shift+5` (Emacs), `Ctrl+H` (Sublime Text), `⌘ ⌥ F` (Sublime Text (macOS)), `Ctrl+H` (Visual Studio), `⌃ H` (Visual Studio (macOS)), `Ctrl+H` (NetBeans), `Ctrl+F` (Eclipse), `Ctrl+R` (Eclipse (macOS))。

2. 在搜索字段中，输入括号  `()` ，表示一个 [捕获组](https://www.regular-expressions.info/brackets.html)，例如：  `\stitle="(.*)?"\s*(/>*)` 。

3. 在替换字段中，通过以 1 开始的数字来引用这些 [backreference](https://www.regular-expressions.info/backref.html) 组，例如：

```XML
$2<title>$1</title>

```

。

4. IntelliJ IDEA 会根据搜索条件高亮显示找到的匹配项，并显示包含替换字符串的提示。

![替换为正则表达式结果](https://resources.jetbrains.com/help/img/idea/2026.3/replace_with_regex.png)

## 切换字符大小写

您可以使用正则表达式更改符合某些条件的字符的大小写。

Procedure:

1. 打开搜索和替换窗格 `Ctrl+R` (Windows), `⌘ R` (macOS), `⌘ R` (IntelliJ IDEA Classic (macOS)), `⌘ R` (macOS System Shortcuts), `Ctrl+R` (XWin), `Ctrl+R` (GNOME), `Ctrl+R` (KDE), `Alt+Shift+5` (Emacs), `Ctrl+H` (Sublime Text), `⌘ ⌥ F` (Sublime Text (macOS)), `Ctrl+H` (Visual Studio), `⌃ H` (Visual Studio (macOS)), `Ctrl+H` (NetBeans), `Ctrl+F` (Eclipse), `Ctrl+R` (Eclipse (macOS))。 确保已在搜索字段中选择 ![正则表达式图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.inline.regex.svg)。

2. 在搜索字段中输入搜索模式。

3. 在替换字段中，依据您的需求，输入以下语法之一：

* `\l` 将一个字符改为小写字母，直到字符串中的下一个字符。 例如， `条形图` 变为 `bar` 。

* `\u` 将一个字符转换为大写，直到字符串中的下一个字符。 例如， `bar` 变为 `条形图` 。

* `\L` 将字符更改为小写，直到文字字符串的末尾 `\E` 。 例如， `BAR` 变为 `bar` 。

* `\U` 将字符更改为大写，直到字符串末尾 `\E` 。 例如， `bar` 变为 `BAR` 。

![切换到大写字符示例](https://resources.jetbrains.com/help/img/idea/2026.3/changing_character_with_regex.png)

如需更多信息，请参阅 [RegEx syntax](regular-expressions.html)参考表。

## See also

### 开始

[编辑器基础](using-code-editor.html)

### 参考

[正则表达式语法参考](regular-expressions.html)

### 过程

[在文件中搜索目标](finding-and-replacing-text-in-file.html)

