プロが教える店舗&オフィスのセキュリティ対策術

正規表現でタブ区切りの文字列の順序を入れ替える作業を試みています。
AAA BBB CCC
PPP QQQ RRR

のような文字列を

BBB CCC AAA
QQQ RRR PPP

のように2列目、3列目、1列目のように順番を入れ替えたいです。

VBScriptで1行ずつ読み込み、タブを区切り文字として、配列に放り込み、配列の順番を指定して出力すればなんとか対応できるのですが、どうしてもさくらエディタで実装したいのですが、正規表現を駆使して対応できないものでしょうか?

検索により、パターンにマッチする部分は正規表現で2列目とか3列目というのは書けるのですが、パターンマッチだけで、置換後の文字列に変数などを使用できず苦しんでいます。

正規表現を用いていれればいいし、無理なら、さくらエディタで秀丸のように配列やFOR文などを使いたいのですが、使い方がわからず、質問しました。

ご存知の方がいらっしゃれば、教えてください。

A 回答 (1件)

http://sakura-editor.sourceforge.net/htmlhelp/HL …
ここの
「拡張式集合」
「置換で使える参照」
の組合せです。

(1列目の正規表現)\t(2列目と3列目の正規表現)
というように検索文字列を設定すると
グループ1: 1列目
グループ2: 2列目と3列目
となります。
これで、置換側で
$1
とすると、グループ1で取り込んだ内容で置換されます。$2には同様に2列目と3列目が入っているので
$2\t$1
とすれば、順番が入れかわります。


()でグループ化して取り込み→ $1,$2...で利用
というのは、常套手段ですので覚えておきましょう。

ちなみに、秀丸でもほぼ同様にできます。
正規表現でうまく表現できないような複雑なケースでもない限り、forなどのマクロを作る必要はありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。できました。これ、すごいですね!

お礼日時:2013/01/06 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!