LoginSignup
8
4

More than 5 years have passed since last update.

番号指定参照の直後に数値が続く場合の書きかた

Last updated at Posted at 2018-11-18

はじめに

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_に置換したい

置換前
image.png
置換後
image.png

ハチロクが消えた・・・!?

OKサンプル

${index}数値

同じく86_101_に置換したい

置換前
image.png
置換後
image.png

めでたしめでたし。

経緯と補遺

正規表現にて()で囲んだ文字列を$1で参照できますが、$1の後に数値を書きたかっただけです。
${index}とすることで安全な番号指定参照ができます。

番号指定参照の$1とリテラルの数値を明確に区別できるということです。

また、上記例だと普通に86_で検索して置換できますが、
\d{2}の中身と置換先の数値が都度変わっていたので検索・置換の組み直しが面倒でした。1
置換前:(..)\d{2}\_
置換先:${1}置換先数値_
とすれば置換先数値だけ書き換えればいいので労力を若干軽減できますよね。

メタ文字紹介

今回使用したメタ文字たちの紹介です。

メタ文字 意味
(..) なにかの2文字。番号指定参照可能
\d{2} 0~9のいずれか2文字
\_ エスケープされたアンダースコア
無意識にやっていたが、本当はエスケープ不要
${1} (安全な)番号指定参照。直後に数値を続けられる
検索時に()で囲んだ文字を参照できる
\1 番号指定による後方参照。今回、勘違いしていたもの
正直なところ番号指定参照との違いをわかっていない

参考

良い記事を書くためのガイドライン
正規表現メモ
サクラエディタで利用可能な正規表現


  1. 数値は2桁と定義済み 

8
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4