Regex 正規表示法 - 替換 (Substitution)
替換 (substitution) 是只能用在取代模式 (replacement) 下的語法。
語法 | 說明 |
---|---|
$number ${number} | number 表示匹配的群組 (capturing group),群組編號從 1 開始 $1。$ 後面接著的所有數字都會被解讀為屬於 number 群組,如果這不是你希望的,你可以用 ${number} 語法,例如用 ${1}1 就不會被解讀為第 11 個群組,而是第 1 個。 |
${name} | 用來引用 Named Capturing Group 的值。 |
$$ | 用來跳脫 (escape) $ 的特殊意義,表示 $ 字元。 |
$& | 用來引用整個匹配的字串。 |
$` | 用來引用匹配字串的前面的所有字 (before match)。 |
$' | 用來引用匹配字串的後面的所有字 (after match)。 |
$+ | 用來引用匹配的最後一個群組。 |
$_ | 用來引用整個輸入的字串。 |
Substitution 的語法在不同程式語言中的實作可能略有差異,但用法是一樣的。
Regular expression substitution 範例
替代編號群組 $number, ${number}
規則運算式模式:
\b(\w+)(\s)(\w+)\b
替代模式:
$3$2$1
輸入字串:
one two
結果字串:
two one
替代具名群組 ${name}
規則運算式模式:
\b(?<word1>\w+)(\s)(?<word2>\w+)\b
替代模式:
${word2} ${word1}
輸入字串:
one two
結果字串:
two one
替代 "$" 字元
規則運算式模式:
\b(\d+)\s?USD
替代模式:
$$$1
輸入字串:
103 USD
結果字串:
$103
替代整個相符項目 $&
規則運算式模式:
\$?\d*\.?\d+
替代模式:
($&)
輸入字串:
$1.30
結果字串:
($1.30)
替代相符項目前的文字 $`
規則運算式模式:
B+
替代模式:
$`
輸入字串:
AAABBCC
結果字串:
AAAAAACC
替代相符項目後的文字 $'
規則運算式模式:
B+
替代模式:
$'
輸入字串:
AABBCC
結果字串:
AACCCC
替代最後擷取的群組 $+
規則運算式模式:
B+(C+)
替代模式:
$+
輸入字串:
AABBCCDD
結果字串:
AACCDD
替代整個輸入字串 $_
規則運算式模式:
B+
替代模式:
$_
輸入字串:
AABBCC
結果字串:
AAAABBCCCC