PyCharm 2025.3 Help

正则表达式语法参考

本节简要介绍 正则表达式语法 ,可用于创建 搜索和替换以及问题导航模式。

正则表达式语法参考

字符

描述

\

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

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

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

^

匹配输入的开始位置。

$

匹配输入的结束位置。

*

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

+

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

?

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

.

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

( 子表达式 )

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

  • 如果需要在同一正则表达式内使用匹配的子串,可以使用反向引用 \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] 匹配 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) 表示 PyCharm 将搜索 A ,但仅当其后不跟随 B 时。

(?=)

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

(?<=)

这是一个正向后顾模式。 例如, (?<=B)A 表示 PyCharm 将搜索 A ,但仅当其前面有 B 时。

(?<!)

这是一个负向后顾模式。 例如, (?<!B)A 表示 PyCharm 将搜索 A ,但仅当其前面没有 B 时。

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

提示与技巧

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

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

    带有当前正则表达式的对话框
  • 选择 编辑 RegExp 片段 ,然后按 Enter。 正则表达式会在编辑器中的单独拆分选项卡中打开以供编辑。 请注意,这只是一个临时缓冲区,物理上不会创建任何文件:

    带有当前正则表达式的临时文件

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

  • 使用 RegEx Injection 用于字符串文本。 选择目标字符串文本,按 Alt+Enter 调用意图操作,选择 注入语言或引用 ,然后在可用选项列表中选择 RegEx

    注入正则表达式
最后修改日期: 2025年 12月 2日