zoukankan      html  css  js  c++  java
  • 正则表达式中的替代

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

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

    替换

    说明

    $ 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
    也就是将整个匹配结果替换成整个输入字符串
     
  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/jecyhw/p/4035376.html
Copyright © 2011-2022 走看看