GoLand 2025.2 Help

正则表达式语法参考

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

正则表达式示例

RegEx 语法参考

字符

描述

\

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

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

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

^

匹配输入的开头。

$

匹配输入的结尾。

*

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

+

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

?

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

.

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

( 子表达式 )

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

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

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

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

x|y

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

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

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

[xyz]

一个字符集。 匹配所包含字符中的任意一个。 例如, [abc] 匹配 plain 中的 a

[^xyz]

一个否定字符集。 匹配未包含在内的任意字符。 例如, [^abc] 匹配 plain 中的 p

[a-z]

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

[^m-z]

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

\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日