Sakura Editor で正規表現で検索した結果を置換したい。

世の中には正規表現というものがあるということは知っていたけど
書き方はさっぱりと解らない。(10年以上前に学校で習った気も‥‥)
先日、ちょっとした業務で必要になったので調べてみた。そのメモ。

0.やりたいこと

STRTEXT(2) 
STRTEXT(42)
STRTEXT(5)

というテキストを

STRTEXT(2)    ->   STRTEXT(2 BYTE)
STRTEXT(42)   ->   STRTEXT(42 BYTE)
STRTEXT(5)    ->   STRTEXT(5 BYTE)


という形にしたい。
この場合なら )  を BYTE) に置換すれば良いんだけど
実際のテキストには ) がたくさんある。



1.Sakura Editor で正規表現を利用して検索してみる。

 まずは置換とか難しいことを言わずに正規表現を用いて検索してみる。

 検索値:STRTEXT\(\d+\)

 先頭は全て STRTEXT なので、STRTEXT を入力
 STRTEXTの次の ( と、末尾の ) にはエスケープ文字である \ が必要らしい。
 今回の例では、かっこの間の数字が変わっているけど
 これは正規表現では d+ という値で表すらしい。(1文字以上の数字(0-9))
 これに更にエスケープ文字である、\ を付ける。

 参考:正規表現サンプル(数字を検索する) - 
 http://hodade.adam.ne.jp/seiki/page.php?s_suuji1

2.検索で見つかった値を置換する。

 検索では STRTEXT\(\d+\) と入力したけど、置換の場合は更にこうなる。

 置換前の値 STRTEXT\((\d+)\)
 置換後の値 STRTEXT\($1 BYTE\)



  \d+ の前に新たに ( ) が追加された。
 これは \d+ で検索された部分を、置換後の $1 に入力するためには
 カッコで囲う必要があるからだそうだ。

 参考:[サクラエディタ]正規表現で検索した結果の一部を置換する方法 - 
 http://oss-lab.net/?p=906

何だか結果だけ見ると良く解らない正規表現だけど
一つずつ分解してみると案外取っ付き易そうだ。

-------------------------------------------------------------

以下は元のメモ

 置換前を分解するとこうなる
 STRTEXT \( (\d+) \)
  ・STRTEXT はそのまま。
  ・\( と末尾の \) は、( ) カッコの前には \ が必要になる。
  ・\d+ は1文字以上の数字(0-9)
  ・\d+ を () で括って、(\d+) にしているのは、置換後の $1 に値を挿入するため。
  ・検索だけをしたい場合は、 STRTEXT\(\d+\) でも良い。

Sakura Editor | SourceForge.net -
http://sourceforge.net/projects/sakura-editor/

スポンサードリンク

0 件のコメント :

コメントを投稿