IntelliJ IDEA 2025.2 Help

正则表达式语法参考

本节是对 regexp syntax 的简要总结,可以用于创建 search and replace 以及问题导航模式。

正则表达式示例

正则表达式语法参考

字符

描述

\

将下一个字符标记为特殊字符或字面量。 例如:

  • n 匹配字符 n\n 匹配换行符。

  • 序列 \\ 匹配 \\( 匹配 (

^

匹配输入的开头。

$

匹配输入的结尾。

*

匹配前面的字符零次或多次。 例如, zo* 匹配 zzoo

+

匹配前面的字符一次或多次。 例如, zo+ 匹配 zoo ,但不匹配 z

?

匹配前一个字符零次或一次。 例如, a?ve?venever 中匹配。

匹配除换行符以外的任何单个字符。

( 子表达式 )

匹配 子表达式并记住匹配。 如果正则表达式的一部分用圆括号括起来,则正则表达式的那一部分将被分组在一起。 因此,正则表达式运算符可以应用于整个组。

  • 如果您需要在同一正则表达式中使用匹配的子字符串,您可以使用反向引用 \num 来检索它,其中 num = 1..n

  • 如果您需要在当前正则表达式之外的某处引用匹配的子字符串(例如,在另一个正则表达式中作为替换字符串),可以使用美元符号 $num 来检索它,其中 num = 1..n

  • 如果您需要将括号字符包含在 子表达式中,请使用 \(\)

x|y

匹配 xy。 例如, z|wood 匹配 zwood(z|w)oo 匹配 zoowood

{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}

mn 是非负整数。 匹配 至少 n最多 m 次。 例如, o{1,3} 匹配 food 中的前三个 o。 o{0,1} 等价于 o?

[xyz]

字符集。 匹配括号中任何一个字符。 例如, [abc] 匹配 a 中的字符 plain

[^xyz]

负字符组。 匹配未包含的任何字符。 例如, [^abc] 匹配 p 中的字符 plain

[a-z]

一系列字符。 匹配指定范围内的任意字符。 例如, [a-z] 匹配从 az 范围内的任意小写字母字符。

[^m-z]

字符的负范围。 匹配不在指定范围内的任何字符。 例如, [^m-z] 匹配不在从 mz 范围内的任意字符。

\b

匹配单词和空格之间的边界。 例如, er\b 匹配 er 中的 never ,但不匹配 er 中的 verb

\B

匹配非单词边界。 ea*r\B 匹配 never early 中的 ear

\d

匹配一个数字字符。 相当于 [0-9]

\D

匹配非数字字符。 相当于 [^0-9]

\f

匹配换页符。

\n

匹配换行符。

\r

匹配回车字符。

\s

匹配任何空白字符,包括空格、制表符、换页等。 相当于 [ \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 到 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 了解更多关于语法的信息。

提示和技巧

IntelliJ IDEA 提供用于 检查正则表达式的有效性并编辑正则表达式的意图操作。 将文本光标放在正则表达式处,然后按 Alt+Enter。 意图操作的建议列表(在此上下文中可用)显示如下:

上下文菜单意图
  • 请选择 检查 RegExp 并按 Enter。 弹出的对话框在上窗格中显示当前正则表达式。 在下方窗口中输入此表达式应匹配的字符串。 如果正则表达式与输入的字符串匹配,IntelliJ IDEA 将在该正则表达式旁显示一个绿色的勾号。 如果正则表达式不匹配,则会显示 错误图标

    一个包含当前正则表达式的对话框
  • 请选择 编辑 RegExp 片段 并按 Enter。 正则表达式将在编辑器中单独的拆分标签页中打开以进行编辑。 请注意,这只是一个便笺,没有实际创建文件:

    一个包含当前正则表达式的暂存文件

    在临时记录中键入时,所有更改都会与原始正则表达式同步。 要关闭 scratchpad,请按 Ctrl+F4

最后修改日期: 2025年 9月 22日