替换是只能在替换模式中识别的语言元素。 它们使用正则表达式模式定义全部或部分用于替换输入字符串中的匹配文本的文本。
替换模式可以包含一个或多个替换以及本文字符
替换 |
说明 |
---|---|
$ 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
也就是将整个匹配结果替换成整个输入字符串