いざ使おうとすると忘れてることが多いので。
#対応バージョン
Tcl 8.4.1
#正規表現(regsub)による置換
regsub ?オプション? パターン 元の文字列 置換後の文字列
##よく使うオプション
オプション | 内容 |
---|---|
-all | マッチした部分全て置換 |
-nocase | 大文字小文字を無視 |
-line | 改行コードを認識する |
##応用
置換後の文字列に、パターンでマッチした文字を使用した場合、¥+数字
(¥1等)が利用出来る
例えば、"ping <10.0.0.1-10.255.255.254>"を"ping 10.0.0.1"に置き換えたい場合は、下記のようにする。1
regsub {<((¥d{1,3}¥.){3}¥d{1,3})-(¥d{1,3}¥.){3}¥d{1,3}>} "ping <10.0.0.1-10.255.255.254>" {¥1}
#stringによる置換(位置指定)
string replace 元の文字列 開始位置 終了位置 置換後の文字列
開始位置から終了位置までの部分を「置換後の文字列」で置き換える。
#stringによる置換(複数箇所)
stirngを使って、複数の文字列を置換することもできる。
string map 置換する文字の配列 元の文字列
「置換する文字の配列」は、置換対象の文字列をキー、置換後の文字列を値とするKey-Valueペア。
例えば、「2015」を「2016」に、「Summer」を「Spring」に置き換える場合は、以下のようになる。
string map {2015 2016 Summer Spring} "ABC 2015 Summer coming soon."
とりあえず、この3種類を押さえておけば、大抵なんとかなる。
しかし、Tclの配列だろうと、文字列だろうと、表現がほぼ同じってのは便利なんだか、不便なんだか。。。
-
¥0はマッチした部分全体が入ることに注意 ↩