正则表达式中的替代

替换是只能在替换模式中识别的语言元素。 它们使用正则表达式模式定义全部或部分用于替换输入字符串中的匹配文本的文本。

替换模式可以包含一个或多个替换以及本文字符

替换

说明

$ number

包括替换字符串中的由 number 标识的捕获组所匹配的最后一个子字符串。

${ name }

包括替换字符串中由 (?<name> ) 指定的命名组所匹配的最后一个子字符串

$$

包括替换字符串中的单个“$”文本。 

$&

包括替换字符串中整个匹配项的副本。

$`

包括替换字符串中的匹配项前的输入字符串的所有文本

$'

包括替换字符串中的匹配项后的输入字符串的所有文本

$+

包括在替换字符串中捕获的最后一个组

$_

包括替换字符串中的整个输入字符串。 有关详细信息。

$ number示例:

pattern: (a)(d)(b);

replacement: $1     replacement: $2      replacement: $3

input:a1b           input:a1b            input:a1b

output:a          output:1            output:b

也就是将整个匹配结果替换成某个捕获组
${ name }示例:类似 $ number

pattern: (a)(?<group>d)(b)

replacement: ${group}

input:a1b
output:1 也就是将整个匹配结果替换成某个命名捕获组
$$ 示例:

pattern: adb

replacement: $$($$表示$,是替代中的转义字符)

input:a1b;
output:1
也就是将整个匹配结果替换成$
$&示例:

pattern: adb

replacement: $&

input:a1b

output:a1b
也就是将整个匹配结果替换成本身

$`示例:($`说明 $` 替换将匹配的字符串替换为匹配项前面的整个输入字符串。 
    即,它将在删除匹配的文本时重复输入字符串,直至匹配。 匹配文本后
    面的任何文本在结果字符串中保持不变。 如果输入字符串中有多个匹配
    项,则替换文本将派生自原始输入字符串,而不是派生自文本已由早期
    匹配项替换的字符串。(该示例提供了说明。)如果没有匹配项,则 $`
    替换将不起作用。
) pattern: d+ replacement: $` input:aa1bb2cc3dd4ee5 output:aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee 

在此示例中,输入字符串 "aa1bb2cc3dd4ee5" 包含五个匹配项。

下表说明了 $` 替换如何使正则表达式引擎替换输入字符串中的每个匹配项。

插入文本在结果列中以红色字体显示。

Match

Position

匹配项前的字符串

结果字符串

1

2

aa

aaaabb2cc3dd4ee5

2

5

aa1bb

aaaabbaa1bbcc3dd4ee5

3

8

aa1bb2cc

aaaabbaa1bbccaa1bb2ccdd4ee5

4

11

aa1bb2cc3dd

aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddee5

5

14

aa1bb2cc3dd4ee

aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee



$'示例:(类似$`,刚好和$`相反)

pattern: d+

replacement: $'

input: aa1bb2cc3dd4ee5

output:aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee 

在此示例中,输入字符串 "aa1bb2cc3dd4ee5" 包含五个匹配项。

下表说明了 $` 替换如何使正则表达式引擎替换输入字符串中的每个匹配项。

插入文本在结果列中以红色字体显示。

Match

Position

匹配项后的字符串

结果字符串

1

2

bb2cc3dd4ee5

aabb2cc3dd4ee5bb2cc3dd4ee5

2

5

cc3dd4ee5

aabb2cc3dd4ee5bbcc3dd4ee5cc3dd4ee5

3

8

dd4ee5

aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5dd4ee5

4

11

ee5

aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee5

5

14

为空

aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee


 
$+ 示例:

pattern: (a)(d)(b)

replacement: $+

input:a1b

output:b

也就是将整个匹配结果替换成最后一个捕获组
$_$number示例:

pattern: d

replacement: $_

input:a1b

output:aa1bb
也就是将整个匹配结果替换成整个输入字符串
 
原文地址:https://www.cnblogs.com/jecyhw/p/4035376.html