はじめに
2018/11/20 0時頃
記事名を「番号指定参照の直後に数値が続く場合の書きかた」に変更しました。
旧記事名「後方参照の直後に数値が続く場合の書きかた」
scivola様、コメントありがとうございました。
本記事の動作環境は下記のとおりです。お使いの環境によっては同じように動作しない可能性があります。
エディタ「サクラエディタ 2.3.2.0」
正規表現ライブラリ「bregonig.dll Ver.4.12 with Onigmo 6.1.2」
パターン
${index}数値
何ができるか
番号指定参照$1
の直後に数値が続いても正しく置換ができます。
NGサンプル
$index数値
86_
を101_
に置換したい
ハチロクが消えた・・・!?
OKサンプル
${index}数値
同じく86_
を101_
に置換したい
めでたしめでたし。
経緯と補遺
正規表現にて()
で囲んだ文字列を$1
で参照できますが、$1
の後に数値を書きたかっただけです。
${index}
とすることで安全な番号指定参照ができます。
番号指定参照の
$1
とリテラルの数値
を明確に区別できるということです。
また、上記例だと普通に86_
で検索して置換できますが、
\d{2}
の中身と置換先の数値が都度変わっていたので検索・置換の組み直しが面倒でした。1
置換前:(..)\d{2}\_
置換先:${1}置換先数値_
とすれば置換先数値
だけ書き換えればいいので労力を若干軽減できますよね。
メタ文字紹介
今回使用したメタ文字たちの紹介です。
メタ文字 | 意味 |
---|---|
(..) | なにかの2文字。番号指定参照可能 |
\d{2} | 0~9のいずれか2文字 |
\_ | エスケープされたアンダースコア 無意識にやっていたが、本当はエスケープ不要 |
${1} | (安全な)番号指定参照。直後に数値を続けられる 検索時に()で囲んだ文字を参照できる |
\1 | 番号指定による後方参照。今回、勘違いしていたもの 正直なところ番号指定参照との違いをわかっていない |
参考
良い記事を書くためのガイドライン
正規表現メモ
サクラエディタで利用可能な正規表現
-
数値は2桁と定義済み ↩