GoLand 2025.2 Help

正则表达式语法参考

本节简要总结了可用于创建 查找与替换以及问题导航模式的 regexp 语法。

正则表达式示例

RegEx 语法参考

字符

描述

\

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

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

  • 序列 \\ 匹配 \ ,而 \( 匹配 (。

^

匹配输入的开头。

$

匹配输入的结尾。

*

匹配前一个字符零次或多次。 例如, zo* 匹配 z 或 zoo。

+

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

?

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

.

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

( 子表达式 )

匹配 subexpression 并记住该匹配。 如果正则表达式的一部分用括号括起来,则该部分会被视为一个整体。 因此,正则表达式运算符可以应用于整个括号组。

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

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

  • 如果需要在 subexpression 中包含括号字符,请使用 \( 或 \)。

x|y

匹配 x 或 y。 例如, z|wood 匹配 z 或 wood。 (z|w)oo 匹配 zoo 或 wood。

{n}

n 是非负整数。 匹配 恰好n 次。 例如, o{2} 不匹配 o 中的 Bob ,但匹配 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 匹配 never 中的 er ,但不匹配 verb 中的 er。

\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、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) 表示 GoLand 将搜索 A ,但前提是不紧跟着 B。

(?=)

这是一个正向前瞻模式。 例如, A(?=B) 表示 GoLand 将搜索 A ,但仅在其后紧跟 B 时才匹配。

(?<=)

这是一个正向后顾模式。 例如, (?<=B)A 表示 GoLand 将搜索 A ,但前提是其前方存在 B。

(?<!)

这是一个负向后顾模式。 例如, (?<!B)A 表示 GoLand 将搜索 A ,但前提是其前方不存在 B。

由于 GoLand 支持所有标准正则表达式语法,您可以访问 https://www.regular-expressions.info 了解有关语法的更多信息。

技巧提示

GoLand 提供意图操作以 检查正则表达式的有效性并编辑正则表达式。 将插入符号置于正则表达式上,然后按 Alt+Enter。 将在此上下文中可用的意图操作建议列表显示出来:

  • 选择 检查 RegExp 并按下 Enter。 弹出的对话框将在上方窗格中显示当前正则表达式。 在下方窗格中输入应与表达式匹配的字符串。 如果正则表达式与输入的字符串匹配,GoLand 将在该正则表达式旁边显示绿色复选标记。 如果正则表达式不匹配,则会显示 错误图标。

  • 选择 编辑 RegExp 片段 并按下 Enter。 该正则表达式将在编辑器的独立拆分选项卡中打开以进行编辑。 请注意,这是一个临时工作区,不会实际创建任何文件:

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

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