正規表現を利用して文字列を検索し、すべての文字列を置き換える
文字列を検索し、マッチした文字列をすべて置き換えます。文字列の検索は正規表現で指定します。
1.検索対象の設定
検索対象はドキュメント全体、もしくは、選択範囲に限定することができます。ドキュメント全体を検索対象にする場合は、以下のようにテキストが選択されていない状態にします。
また検索は、現在カーソル(キャレット)がある位置から行われ、ドキュメントの最後まで検索を行い、再度ドキュメントの頭からカーソル(キャレット)がある位置まで行われます。
検索対象を選択範囲に限定したい場合は、以下のように検索対象のテキストを選択します。
2.コマンドの入力
大文字・小文字を区別して文字列の検索を行う場合、以下のフォーマットでコマンドを入力します。find.regex.replace-all 検索する文字列 置き換える文字列
大文字・小文字を区別しないで文字列の検索を行う場合、以下のフォーマットでコマンドを入力します。
find.regex.replace-all-i 検索する文字列 置き換える文字列
3.文字列の置き換え
「エンター」キーを押すと、以下のように検索条件にマッチした文字列がすべて置き換わります。文字列が見つからなかった場合
検索条件にマッチする文字列が見つからなかった場合は、以下のように表示されます。後方参照を利用する
正規表現を使用した文字列の置き換えでは、後方参照を利用することができます。後方参照を利用することで、より高度な文字列の置き換えを行うことができます。
後方参照の指定方法
基本的な考え方はPythonの正規表現と同じです。「検索する文字列」にグループを指定します。
後方参照は「置き換える文字列」に指定します。
記述方法は、「$グループ番号」です。
グループ番号は、「match.group()」に指定する番号と同じです。
1.ドキュメントのサンプル
ここでは例として、以下のようなドキュメントを用意しました。「style」要素の属性である「name2」の属性値を、「name1」の属性値と同じ値にします。
2.コマンドの入力
後方参照を利用してコマンドを入力します。
find.regex.replace-all name1="(.+?)"\sname2="(.+?)" name1="$1"\tname2="$1"
ちなみに以下のように入力すると、「name2」の属性値と「name1」の属性値を入れ替えることができます。
find.regex.replace-all name1="(.+?)"\sname2="(.+?)" name1="$2"\tname2="$1"