当前文档版本为 v0.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

查找/替换 窗口

查找/替换 窗口

查找/替换 窗口

查找和替换支持正则表达式,在查找正则表达式中可以使用小括号()进行捕获,捕获值可以通过\加数字(0 ~ 9)的方式在替换文本中引用。例如文本number123xyz通过正则表达式([a-zA-Z]+)(\d+).*替换为\1: \2后得到的结果为number: 123

当小括号出现嵌套时,以(出现的先后顺序为准。

以下是对正则表达式的说明(内容来自于RE2,部分不适用于本IDE):

Single characters

表达式

说明

.

any character, possibly including newline (s=true)

[xyz]

character class

[^xyz]

negated character class

\d

Perl character class

\D

negated Perl character class

[[:alpha:]]

ASCII character class

[[:^alpha:]]

negated ASCII character class

\pN

Unicode character class (one-letter name)

\p{Greek}

Unicode character class

\PN

negated Unicode character class (one-letter name)

\P{Greek}

negated Unicode character class

Composites

表达式

说明

xy

x followed by y

x|y

x or y (prefer x)

Repetitions

表达式

说明

x*

zero or more x, prefer more

x+

one or more x, prefer more

x?

zero or one x, prefer one

x{n,m}

n or n+1 or ... or m x, prefer more

x{n,}

n or more x, prefer more

x{n}

exactly n x

x*?

zero or more x, prefer fewer

x+?

one or more x, prefer fewer

x??

zero or one x, prefer zero

x{n,m}?

n or n+1 or ... or m x, prefer fewer

x{n,}?

n or more x, prefer fewer

x{n}?

exactly n x

x{}

(== x*) NOT SUPPORTED vim

x{-}

(== x*?) NOT SUPPORTED vim

x{-n}

(== x{n}?) NOT SUPPORTED vim

x=

(== x?) NOT SUPPORTED vim

Implementation restriction: The counting forms x{n,m}, x{n,}, and x{n} reject forms that create a minimum or maximum repetition count above 1000. Unlimited repetitions are not subject to this restriction.

Possessive repetitions

表达式

说明

x*+

zero or more x, possessive NOT SUPPORTED

x++

one or more x, possessive NOT SUPPORTED

x?+

zero or one x, possessive NOT SUPPORTED

x{n,m}+

n or ... or m x, possessive NOT SUPPORTED

x{n,}+

n or more x, possessive NOT SUPPORTED

x{n}+

exactly n x, possessive NOT SUPPORTED

Grouping

表达式

说明

(re)

numbered capturing group (submatch)

(?P<name>re)

named & numbered capturing group (submatch)

(?<name>re)

named & numbered capturing group (submatch) NOT SUPPORTED

(?'name're)

named & numbered capturing group (submatch) NOT SUPPORTED

(?:re)

non-capturing group

(?flags)

set flags within current group; non-capturing

(?flags:re)

set flags during re; non-capturing

(?#text)

comment NOT SUPPORTED

(?|x|y|z)

branch numbering reset NOT SUPPORTED

(?>re)

possessive match of re NOT SUPPORTED

re@>

possessive match of re NOT SUPPORTED vim

%(re)

non-capturing group NOT SUPPORTED vim

Flags

表达式

说明

i

case-insensitive (default false)

m

multi-line mode: ^ and $ match begin/end line in addition to begin/end text (default false)

s

let . match \n (default false)

U

ungreedy: swap meaning of x* and x*?, x+ and x+?, etc (default false)

Flag syntax is xyz (set) or -xyz (clear) or xy-z (set xy, clear z).

Empty strings

表达式

说明

^

at beginning of text or line (m=true)

$

at end of text (like \z not \Z) or line (m=true)

\A

at beginning of text

\b

at ASCII word boundary (\w on one side and \W, \A, or \z on the other)

\B

not at ASCII word boundary

\G

at beginning of subtext being searched NOT SUPPORTED pcre

\G

at end of last match NOT SUPPORTED perl

\Z

at end of text, or before newline at end of text NOT SUPPORTED

\z

at end of text

(?=re)

before text matching re NOT SUPPORTED

(?!re)

before text not matching re NOT SUPPORTED

(?<=re)

after text matching re NOT SUPPORTED

(?<!re)

after text not matching re NOT SUPPORTED

re&

before text matching re NOT SUPPORTED vim

re@=

before text matching re NOT SUPPORTED vim

re@!

before text not matching re NOT SUPPORTED vim

re@<=

after text matching re NOT SUPPORTED vim

re@<!

after text not matching re NOT SUPPORTED vim

\zs

sets start of match (= \K) NOT SUPPORTED vim

\ze

sets end of match NOT SUPPORTED vim

\%^

beginning of file NOT SUPPORTED vim

\%$

end of file NOT SUPPORTED vim

\%V

on screen NOT SUPPORTED vim

\%#

cursor position NOT SUPPORTED vim

\%'m

mark m position NOT SUPPORTED vim

\%23l

in line 23 NOT SUPPORTED vim

\%23c

in column 23 NOT SUPPORTED vim

\%23v

in virtual column 23 NOT SUPPORTED vim

Escape sequences

表达式

说明

\a

bell (== \007)

\f

form feed (== \014)

\t

horizontal tab (== \011)

\n

newline (== \012)

\r

carriage return (== \015)

\v

vertical tab character (== \013)

\*

literal *, for any punctuation character *

\123

octal character code (up to three digits)

\x7F

hex character code (exactly two digits)

\x{10FFFF}

hex character code

\C

match a single byte even in UTF-8 mode

\Q...\E

literal text ... even if ... has punctuation

\1

backreference NOT SUPPORTED

\b

backspace NOT SUPPORTED (use \010)

\cK

control char ^K NOT SUPPORTED (use \001 etc)

\e

escape NOT SUPPORTED (use \033)

\g1

backreference NOT SUPPORTED

\g{1}

backreference NOT SUPPORTED

\g{+1}

backreference NOT SUPPORTED

\g{-1}

backreference NOT SUPPORTED

\g{name}

named backreference NOT SUPPORTED

\g<name>

subroutine call NOT SUPPORTED

\g'name'

subroutine call NOT SUPPORTED

\k<name>

named backreference NOT SUPPORTED

\k'name'

named backreference NOT SUPPORTED

\lX

lowercase X NOT SUPPORTED

\ux

uppercase x NOT SUPPORTED

\L...\E

lowercase text ... NOT SUPPORTED

\K

reset beginning of $0 NOT SUPPORTED

\N{name}

named Unicode character NOT SUPPORTED

\R

line break NOT SUPPORTED

\U...\E

upper case text ... NOT SUPPORTED

\X

extended Unicode sequence NOT SUPPORTED

\%d123

decimal character 123 NOT SUPPORTED vim

\%xFF

hex character FF NOT SUPPORTED vim

\%o123

octal character 123 NOT SUPPORTED vim

\%u1234

Unicode character 0x1234 NOT SUPPORTED vim

\%U12345678

Unicode character 0x12345678 NOT SUPPORTED vim

Character class elements

表达式

说明

x

single character

A-Z

character range (inclusive)

\d

Perl character class

[:foo:]

ASCII character class foo

\p{Foo}

Unicode character class Foo

\pF

Unicode character class F (one-letter name)

Named character classes as character class elements

表达式

说明

[\d]

digits (== \d)

[^\d]

not digits (== \D)

[\D]

not digits (== \D)

[^\D]

not not digits (== \d)

[[:name:]]

named ASCII class inside character class (== [:name:])

[^[:name:]]

named ASCII class inside negated character class (== [:^name:])

[\p{Name}]

named Unicode property inside character class (== \p{Name})

[^\p{Name}]

named Unicode property inside negated character class (== \P{Name})

Perl character classes (all ASCII-only)

表达式

说明

\d

digits (== [0-9])

\D

not digits (== [^0-9])

\s

whitespace (== [\t\n\f\r ])

\S

not whitespace (== [^\t\n\f\r ])

\w

word characters (== [0-9A-Za-z_])

\W

not word characters (== [^0-9A-Za-z_])

\h

horizontal space NOT SUPPORTED

\H

not horizontal space NOT SUPPORTED

\v

vertical space NOT SUPPORTED

\V

not vertical space NOT SUPPORTED

ASCII character classes

表达式

说明

[[:alnum:]]

alphanumeric (== [0-9A-Za-z])

[[:alpha:]]

alphabetic (== [A-Za-z])

[[:ascii:]]

ASCII (== [\x00-\x7F])

[[:blank:]]

blank (== [\t ])

[[:cntrl:]]

control (== [\x00-\x1F\x7F])

[[:digit:]]

digits (== [0-9])

[[:graph:]]

graphical (== [!-~] == [A-Za-z0-9!”#$%&’()*+,-./:;<=>?@[\\\]^_`{|}~])

[[:lower:]]

lower case (== [a-z])

[[:print:]]

printable (== [ -~] == [ [:graph:]])

[[:punct:]]

punctuation (== [!-/:-@[-`{-~])

[[:space:]]

whitespace (== [\t\n\v\f\r ])

[[:upper:]]

upper case (== [A-Z])

[[:word:]]

word characters (== [0-9A-Za-z_])

[[:xdigit:]]

hex digit (== [0-9A-Fa-f])