PhpStorm 2021.3 Help

正则表达式语法参考

本节简要总结了可用于创建搜索和替换以及发布导航模式的正则表达式语法。

正则表达式语法参考

特点

描述

\

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

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

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

^

匹配输入的开头。

$

匹配输入的结尾。

*

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

+

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

?

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

.

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

(子表达式)

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

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

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

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

xy |_

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

{ n}

n是一个非负整数。精确 匹配n次。例如,o{2}不匹配Bob中的o,但匹配foooood中的前两个 o 。

{ n,}

n是一个非负整数。至少 匹配n次。

例如,o{2,}不匹配Bob中的o,而匹配“foooood”中的所有 o。

o{1,}相当于o+o{0,}相当于o*

{ _, }

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

[xyz]

一个字符集。匹配任何一个封闭的字符。例如,[abc]匹配a in plain

[^ xyz ]

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

[ 阿兹 ]

一系列字符。匹配指定范围内的任何字符。例如,“[az]”匹配az范围内的任何小写字母字符。

[^ mz ]

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

\b

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

\B

匹配非单词边界。ea*r\B从不早。

\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是一个正整数,表示对记住匹配项的引用。

例如,(.)\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)表示 PhpStorm 将搜索A,但前提是后面没有B.

(?=)

这是“积极前瞻”的模式。例如,A(?=B)表示 PhpStorm 将搜索A,但如果仅后跟 . 则匹配B

(?<=)

这是“积极向后看”的模式。例如,(?<=B)A表示 PhpStorm 将搜索A,但前提是B它之前有。

(?<!)

这是“消极后视”的模式。例如,(?<!B)A表示 PhpStorm 将搜索A,但前提是B它之前没有。

由于 PhpStorm 支持所有标准正则表达式语法,您可以查看https://www.regular-expressions.info以获取有关语法的更多信息。

技巧和窍门

PhpStorm 提供意图操作来检查正则表达式的有效性,并在便笺簿中编辑正则表达式。将插入符号放在正则表达式上,然后按Alt+Enter。在此上下文中可用的意图操作建议列表出现:

Checking regular expressions
  • 选择Check RegExp,然后按Enter。弹出的对话框在上部窗格中显示当前的正则表达式。在下部窗格中,键入此表达式应匹配的字符串。如果正则表达式与输入的字符串匹配,PhpStorm 会针对正则表达式显示一个绿色复选标记。如果正则表达式不匹配,则the Error icon显示。

    A dialog with current regex
  • 选择Edit RegExp Fragment,然后按Enter。正则表达式在编辑器的单独选项卡中打开以进行编辑。请注意,这只是一个暂存器,并没有实际创建任何文件:

    A scratch file with the current regex

    当您在便笺簿中键入时,所有更改都会与原始正则表达式同步。要关闭暂存器,请按Ctrl+F4

最后修改:2021 年 9 月 23 日