ラベル 正規表現 の投稿を表示しています。 すべての投稿を表示
ラベル 正規表現 の投稿を表示しています。 すべての投稿を表示

2013年3月21日木曜日

ひとつひとつ順を追って処理する

分かってるようで分かってなかった正規表現。課題を提出した後に間違いに気づきました。
ここで書くとネタバレになるので適当にサンプルを選んで

(1)正社員比率が非常に小さい(約10%)。 
(2)店長を管理職にして、残業手当を支払っていない。
(3)社員の教育にコストを掛けていない。

(99)適当なサンプルの最後。

上記の箇条書きが100近くあると仮定。正規表現で下記に変更したい。


1.正社員比率が非常に小さい(約10%)。 
2.店長を管理職にして、残業手当を支払っていない。
3.社員の教育にコストを掛けていない。
99.適当なサンプルの最後。


行頭パーレンは削除、数字はそのまま(キャッシュ)、数字の後のパーレンを全角ドットに変更。

行頭パーレン→^(
数字はそのまま(キャッシュ)→([0-90-9])+

数字の後のパーレンは行頭パーレン+数字はそのままの後にくる→)

^(で検索、マッチ箇所を確認。
続けて^(([0-90-9])+で検索、マッチ箇所を確認。
最後に^(([0-90-9]))で検索。マッチ箇所を確認。

置換は\1.

一度にやろうとしない。絶~対やろうとしない。
ココ、すっげぇ~重要!
簡単なものはともかく、先読み戻り読み混在のものは混乱するから。

で、せうぞーさんの
[InDesign][regex]正規表現で数字の桁数を表す

は何度でも読む価値ありの名エントリー

(?<![\d,\.])\d(?![\d,\.])

否定後読みと否定先読みが使われてます。

戻り(後)読み+マッチ文字+先読み なんですね。

先読み+マッチ文字+後読みとよく間違えます。


正規表現の先読みと後読みはどっちがどっちだかわかりにくいんだよ!(追記あり)
から画像を拝借しました(^^;A


応用で肯定後読みと肯定先読み、否定後読みと肯定先読み、肯定後読みと否定先読みで世界が広がるんです。今更なんですが手を動かさないと分かりませんです。

2013年3月4日月曜日

「正規表現 次の一歩」はもっとお勧め

3/2(土)、勤務明けの寝不足状態で「正規表現 次の一歩」を受講してきました。
睡眠補給にとサウナに寄ったもののまともに寝ることができなんだ。orz

INDD 2013 Tokyo (spring)と被ってしまったため、前回より参加者は少なめだったものの参加費4000円は十分取り戻せました^^ 講座内容を一部書きますので、読む人は1000円分は得するかも知れません。

正規表現を学んでも使う機会がないと忘れます。で、前回いつ使ったかな?と思い出せば、「お勧め--はじめての正規表現」以来だったのですね。だから当然、忘れます。そんな方のために前半は前回の復習。

前回blogに書きそびれましたが、コンピューターはどう解釈するか?から入ってきます。
総当りで頭から順番にです。止まったら戻りません。次に進みます。なんかこの辺は、むか~し「DTPの勉強会 in 千葉」でやったような気がします。チューリングマシンの停止問題あたりで難しすぎて理解できなかったけど(^^;A m-ogawaさん、元気ですか?


( ) と [ ] の違い

ごくごくたま~~に正規表現を使う ( ) と [ ] が分からなくなります。文字クラスなんて専門用語が出ると何となく分かってるようで、実はよく分かってないという有様。そんなアチキのような初心者は ( ) と [ ] の違いを実際にやってみると分かったような気になります。恥を忍んで質問しました(^^;A

(高畑|張本?)勲で検索するとマッチするのが、高畑勲、張本勲、張勲。 
 一方、[高畑|張本?]勲で検索すると 
高勲、畑勲、|勲、張勲、本勲、?勲がマッチ。


[ ] 内でメタ文字として使用されるのは

ハイフン(-)とサーカムフレックス(^)のみ。

ドット、クエスチョン、アスタリスク、プラス、パーレン、カーリーブラケットなどはメタ文字として解釈されません(ツールによるかもしれない)。
初心者はパーレン内でメタ文字として使用された文字はスクエアブラケット内でもメタ文字として解されると勘違いしてしまいます。

はい、ここまで読んでアチキレベルの初心者は500円は得しましたね。


先読み、戻り(後)読みはアンカー(位置)の一種

初心者が混乱するところがココです。しかし、しかしですよ、なぜか講座を受ければ分かったような気になります。^が行頭、$が行末の位置を指定するように先読み・戻り読みは位置を指定するのです(開眼した気分)。

・高畑勲
・張本勲
・ヴィンセント・ヴァン・ゴッホ
の行頭の中黒のみを検索する場合、^・。行頭位置(^)の後に中黒です。
同様に「勲」の前に空白スペースを入れたい場合、勲$で検索、スペース+勲で置換。勲の後に行末位置です。
しかし先読みでもできます。(?=勲)です。

・高畑|勲
・張本
|勲

(?=パターン)は(ここでは勲)前の位置だったのです。
パターンとマッチ箇所は違います。停止位置条件とでも訳したらいいのでしょうか?

停止位置に文字を挿入できます。メールの返信の冒頭に>を付けたものは
日時:平成25年3月17日(日)18時30分〜21時00分
場所:池袋西口公園
参加費:2,000円(当日支払)
定員:30名
^で検索、>で置換すると
>日時:平成25年3月17日(日)18時30分〜21時00分
>場所:池袋西口公園
>参加費:2,000円(当日支払)
>定員:30名
同様に(?=勲)で検索、スペースで置換すると
・高畑 勲
・張本 勲
・ヴィンセント・ヴァン・ゴッホ
先読みは頭から順に→方向に進み、停まった先にパターンがある。
ただエディターでやると位置が指定されるためマッチ箇所が出てきません。(?=勲)勲でマッチした文字が表示されます。
戻り(後)読みでやる場合、(?<=[畑本])で検索、スペースで置換。



張本勲を張 勲に置き換えを先読み、戻り読みを使ってやる場合、

・張|本|勲

停まる位置は本の前後、本の前が戻り読み、後が先読みです。

(?<=張)本(?=勲) で検索、スペースで置換です。

はい、ここまで読んで1000円^^ 講座を受ければ会費の3倍(12000円)の価値があります。



以下は自己課題と解答(間違ってたら指摘してください)
・高畑勲
・張本勲
・ヴィンセント・ヴァン・ゴッホ 
行頭の中黒はそのまま、氏名の中にある赤字の中黒を除きたい。
戻り読みを使っての検索は(?<=[ァ-ヾ])・だよな。


最も大事なこと

DTPも機能が豊富になり使い方を覚えるのに四苦八苦し、いつの間にか原理原則、定理公式から離れ、結果、なんとなく使っている。正規表現やらJavaSciptなど習得しなければならないものが山ほどある。仕事も時間に追われ、とりあえずトラブルが発生した時の対処法、Tipsは集めるものの基本が出来てないから応用がきかない。自分がやってた時、こんな状態でした。今も変わらないと思います。ひょっとして当時よりひどくなってるかも知れません。

糸井重里氏のいう「多忙は怠惰の隠れ蓑」状態です。以下は引用。
多忙なときっていうのは、現実的な問題がいっぱいあって、それを現実的に解決したり、解決しかかっていたりしている状態だ。そういうときというのは達成感もあるし幸福感もある。ちっぽけなヒロイズムもまんぞくさせてくれるかもしれない。
だが、そういうときに欠けていきやすいものがある。
「なぜ」という疑問とか、大きな視野とか、人間の感情とか、すぐに役立たないようでいて大事なことだ。
このセミナーにはすぐに役立たないようでいて大事なものがある。お勧めです。

2012年12月10日月曜日

お勧め--はじめての正規表現講座

ようやく出席できました(^^;A
当初は「DTPの勉強会 特別編」を受講したのだから必要ね~と思ってました。
しか~し、やもさんの
はじめての正規表現講座参加してきました。お勧め。を読み、
こっ、これは参加してみる価値があるのでは? twitterでも評判は上々、他の方もblogで紹介されてます。受講した感想は「評判に偽りなし!」でした^^
まじお勧めです。積み重ね、積み重ねで丁寧に説明されてます。
と、ここまで書いて、このblogを読んでる人はほとんど受講したよなぁ~


以下は個人的メモ

[0-9]は0~9の数値にマッチするが、[〇-九]は漢数字〇~九にマッチしない。
理由は文字コード。文字コード上で連続していないから。
文字を扱う以上、文字コード表は必須。

メタ文字でキャプチャーとグルーピングの2つ使い方があるパーレン(括弧)

特にキャプチャー、これを理解できただけでも大きな収穫^^ 
初心者(自分)はいきなりゴールに達しようとし、それゆえ躓いてしまう。が、いきなりそこに行かず、段階を踏んで達する。その手順、考え方が理解できる。

例:01-2345-6789 を 01(2345)6789 に置換したい。

初心者は数値に挟まれたハイフンをいきなり全角括弧にと考える。それゆえ躓く。
順を踏んでパーツにバラし、数値、ハイフン、数値、ハイフン、数値を検索する。
数値は[0-9]+、ハイフンは-。
結果、[0-9]+-[0-9]+-[0-9]+でハイフン区切りの電話番号にマッチ。

|01|-|2345|-|6789|

コンピューターは灰色部分で区切って考えます。
で、区切られた数値部分をキャプチャー

([0-9]+)-([0-9]+)-([0-9]+) で検索

区切り部分にパーレンを入れることで、括られた部分がキャプチャーされます。
左から順に\1、\2、\3

\1(\2)\3 で置換


鬼車

オジさん世代では「柔道一直線」で見た記憶が。。。高松英郎が演じてた車周作の異名だったんですね。極めて強力な正規表現エンジンだそうです。Jedit X2.32以降に搭載されてます。

\p{Han} ですべての漢字がマッチできる。
これはunicode上でアチコチに散らばっている漢字をマッチさせるに便利。


最後に
セミナーで使っていた正規表現アプリはイイ!

というのもコンピューターが考えるマッチした区切りが分かるから。
自分の使っているエディタだとこうはならない。ググって探してみたが見当たらなかった。
近いものがwebアプリのRegex Tester – RegexPal


講座『正規表現 次の一歩』は来年3月2日




2012年1月22日日曜日

講座『はじめての正規表現』に申し込み

今日(1/22)、講座『正規表現 次の一歩』があるのを知ったのが昨日。
いや、前から知ってはいたんですけどね(^^;A 日曜日だったんで礼拝終えてからでは、ちとキツイので見送ってました。ところが年末からの正規表現熱が復活して(失敗したか~)の感に囚われてます。

結局、分かってたつもりで分かっていなかった正規表現。そんなわけで講座『はじめての正規表現』に申し込みました。15名(先着順・要申し込み)ですので埋まってしまったらアウトです。

やもさんがはじめての正規表現講座参加してきました。お勧め。をupしてから注目してた講座です。評判高いから間に合うかどうかギリギリのとこかも。
あと自習するなら正規表現パズルですか。ただEmEditorの正規表現が対象となってるだけに秀丸でマッチしないケースがあります。

とりあえず申し込んだことを区切りとしてすっかり忘れたjavascriptに移ります。いきなりでは無理ですので「写経」から始めます。一歩進んで一歩戻るの足踏み状態が続いて早数年。。。自分の能力の限界を感じます。

課題は本文中にある整数、小数点第1、2位の数値を四捨五入して小数点第1位に揃えるです。

イメージとしてはDTPの勉強会 特別編・第2回の
お題3 ・テキストフレーム内の文字「楽しく」にルビをふる
をベースに正規表現でマッチ

お題4 ・テキストの中の値段をすべて10円アップする
の視点から四捨五入計算
でいけそうな希ガス。

2012年1月19日木曜日

リベンジは無理なのか

迷路に嵌った原因、正の整数と小数にマッチする正規表現へのリベンジ。
0 ... OK
1 ... OK
123 ... OK
0123 ... NG
0.1 ... OK
0.123 ... OK
12.345 ... OK
1. ... NG
hoge ... NG
0755 ... NG
↑こんな感じでマッチさせたいそうだ。要は0始まりの整数と小数点で終わる数値をアンマッチして整数と小数点を含んだ数値にマッチさせたい。
前にも書いたが^([1-9]\d*|0)(\.\d+)?$でマッチするが、太字部分の\dがなくてもマッチする。\dが必要なのは.\d(ドット数値)にマッチさせたくない時だ。

^([1-9]\d*|0)(\.\d+)?$のイヤらしいところは行頭、行末を外した([1-9]\d*|0)(\.\d+)?だとマッチ箇所が変わる。条件を満たす位置にあってもだ。

本文中に出現した上記数値にマッチする正規表現を試行錯誤したが、見つからなかったので一つ一つ整理していく。

初心者は正規表現でどこまで出来て、どこから出来ないのかが分からない。仕事でもそうだが何が出来るかより何が出来ないかを知ることが大事。そうでないと無駄な時間を費やしてしまう。しかし待て、試行錯誤の無駄な時間を経験値と呼ぶだろうか? とはいえ、そんな時間を費やしたくなく、ラクしたくて正規表現、スクリプトを習得しようとしているんですよ。なんか矛盾を抱えてる。。。


0始まりの整数にマッチする正規表現(単独の0はOK)
(?<![\.,0-9])0[0-9]+

正直な話、否定後読みが理解できないままテキトーに弄っていたら出来たので、よく分かってません。

ついでに
整数ドットで終わる数値にマッチする正規表現
[0-9]+\.(?![0-9])

ドット始まり整数で終わる数値にマッチする正規表現
(?<![0-9])\.[0-9]+

否定後読みは頭が混乱します。「(@_@)」?

2012年1月18日水曜日

どこで道を間違えたのか

整数の後にドット0を付加する課題にtwitterを通して多くの方からアドバイスをいただきました。javascriptの方に移ろうかと思ったのですが、ほとんど忘れてしまったし、何より正規表現をろくに理解しないまま次の段階に行っても根本的な問題解決になりませんので、もう少し引っ張ります。アチキと同程度の初心者には参考になると思いますし、正規表現を教える立場にいる方は初心者がどこで間違えるのかを知っていただければ幸いです。

\dは全角数字も対象となることを知りました。んで、半角数字のみを想定しますんで引用するものは[0-9]に変えさせていただきます。

♪途中経過を報告すればいろんなことがありまして、私にすれば一大事、私にすれば精一杯、私にすれば画期的、とても明日が楽しみで、いろんな事がありそうで、いろんな人に会えそうで~(古いけど新しい名曲です^^)

きっかけは正規表現の復習 2にあるようにせうぞーさんのツールで整数と小数点を含んだ数値をマッチはどう書くの?といった超初心者的疑問だったんです。ググって正規表現で数字の桁数を表すに達します。

1. 1桁だけの半角数字をマッチさせる場合は
(?<![0-9,\.])[0-9](?![0-9,\.])

2. 正の整数と小数にマッチする正規表現を参考に
([0-9][0-9]*)(\.[0-9]+)?

1.と2.を合体させて10未満の整数、小数点を含んだ数値がマッチする
(?<![0-9,\.])[0-9](\.[0-9]+)?(?![0-9,\.])

ここまでを検証すると3.の([0-9][0-9]*)(\.[0-9]+)?は、、、([0-9]*)(\.[0-9]+)?でいける。というより([0-9]+)(\.[0-9]+)?だよな。
なぜ([1-9]\d*|0)(\.\d+)?のだろうか? ([1-9]*|0)(\.\d+)?でもいけるのに。。。理解できないままマンマ流用したアチキがアホなだけ。

最初の間違いを再度、書き直すと(?<!\.)(-?[0-9]*)(?![0-9\.])
整数のみをマッチさせようとしたのだが「1月」など後ろに漢字がある数値にもマッチするばかりでなく、小数点以下第2の数値にもマッチしてしまった。うへぇ~(;´Д`)


なんで小数点以下第2の数値にもマッチしてしまうのか調べてるうちに
InDesign者のための正規表現入門にそれらしきヒントが。。。

12/20で終わるはずのキャンペーンがまだやってます。これを例にします。

通信講座1講座+Adobe CS5.5 Design Standard ( Adobe Store 製品版 198,450円 )
キャンペーン価格 64,100円

初心者にありがちな間違ったやり方[\d,]+(?!円)で検索しますと

円の前の数値がマッチしません。
こういった事例にせうぞーさんの温かいお言葉が添えられてます^^

どうしてこうなってしまったのか考えてみてください。




はい、考えさせていただきますm(*T▽T*)m

楽チンな楽曲を選んで楽しく演奏
↑こいつを楽(?=しく)で検索すると「楽しく」の楽にのみマッチ。否定先読みの楽(?!しく)で検索すると「楽チン」と「楽曲」の「楽」にのみマッチ。楽チンな楽曲を選んで楽楽しく演奏にして検証すると理解できます。

わき道にそれずに1. 1桁だけの半角数字をマッチさせる場合をベースに
(?<![0-9\.])[0-9,]+(?![0-9\.])

で良かったんですね(汗 とはいえ勉強になりました。

2012年1月16日月曜日

小数点以下第1位に揃える準備

まずCalcで乱数表を作成してから適当に弄ってこんな感じ↓にします。


まぁ、これとてCalcで左を2回クリックして小数点以下第2位に揃え、右1回クリックの四捨五入で終わる話↓なんですけど(汗 自分なりのお勉強ということで^^


整数、小数点以下1位を選んで小数点以下第2位に揃えます。
整数の後にドット0を付加するを参照。
(?<![0-9.])[0-9]+(?![0-9.])で小数点のない整数がマッチ。
\d+\.\d(?!\d)で小数点以下第1位のみの数値がマッチ。
小数点以下第2位のみの数値をマッチさせるには(\d+\.\d\d)(?=\D)←流星さんに教わった
タッチの差で自分が出した答えは\d+\.\d{2}(?!\d)
で、置換で桁数を揃える。

前回も書いたが、表組なら表計算ソフトで四捨五入ができるが、ここでは本文中にある整数、小数点第1、2位の数値を四捨五入して小数点第1位に揃えるという赤字を想定。

四捨五入は正規表現では無理なのでjavascriptで処理することになる。が、ほとんど忘れてしまった(汗 そんな理由で四捨五入のやり方をメモ。

ググるとやり方は2通りある。
ひとつ目はJavascriptで小数点以下X桁を四捨五入するやり方。
n = 3.14159265;
n = n * 100;  // → 314.159265
n = Math.round(n);  // → 314
n = n / 100;  // → 3.14
alert(n)

もうひとつはtoFixedメソッドを使うやり方。
var num_obj = new Number(3.14159265);
str = num_obj.toFixed(2); // → 3.14
alert(str)
とりあえず今日はここまで。

2012年1月13日金曜日

整数の後にドット0を付加する

全国平年値(1971~2000年)・月別最高気温の表をCalcにコピペすると小数点以下が0の場合、省略されて表示されます↓。これをテキストにしますと当然、省略されたまま。

      でも↓クリックひとつで表示されます。

      ↓こんな感じ



でも、この処理をしないまま流し込まれた整数にドット0を付加する作業を想定、正規表現で処理します。正規表現の復習 2を参考に
(?<!\.)(-?[1-9]\d*|0)(?![\d\.])でマッチかと思いきや、「1月」など後ろに漢字がある数値にもマッチしてしまいます。で、原始的に

(?<!\.)(-?[1-9]\d*|0)(?![\d\.月])

でマッチさせました ((^┰^))ゞ テヘヘ
注:ダメな例です。正解は最後にあります。

ちなみに正規表現で全角ひらがなは[ぁ-ゞ]、漢字は[一-龠]、カタカナは[ァ-ヴ]

置換はグループマーキングされてますので¥1.0(秀丸)で終了^^
いろいろ弄り、どうしてこうなるのか?を考えると嵌りますw


1/16追記:uuun....これだと小数点以下第2位の最後の数値にまでマッチしてしまう。整数、小数点以下第1位から2位までが混在する文章で整数のみをマッチさせるにはどうしたらよかんべ。

自己解決:とりあえずマッチ
(?<![\.\d{2}])(-?\d+)(?![\.\d{2}月])
この場合、置換は¥1.00になります。
注:元がダメだから、ダメなまま。最後が正解。

ついでに小数点以下第1位の数値のみにマッチさせる場合、\d+\.\d(?!\d)

なんでこんなことを書いているかというと表組なら表計算ソフトOKだが、本文中の文章に整数、小数点以下第1位、2位が含まれていて小数点以下を揃えるといった赤字を想定してのことだ。小数の足し算、引き算に
教科書や準拠のドリルには 
   3.5+1.7=5.2
のような小数第1位同士の計算が多く、
   2+0.3=2.3
のように桁が揃っていない計算は、それほど多くはありません。
従って、小数の足し算・引き算は、小数点を揃えるということを、強く意識するまでには至らず終了してしまいます。
筆者は2.0+0.3=2.3を意識して教えることを主張している。ならば小数点のない整数の後にドット0を付加し揃える赤字は十分予想される。

1/16再追記:@happyscriptさんがシンプル
偶然TLでも見かけた&週末に知人からも質問されたので正規表現ネタ。小数点を含む半角数字と小数点を含まない半角数字の混在で、小数点を含まない半角数字にマッチする正規表現は

(?<![0-9.])[0-9]+(?![0-9.])

否定先読み&否定後読みを使うのがポイント
2月、1つ、3ヶとかにマッチさせたくない場合は(?<![0-9.])[0-9]+(?![0-9.月つヶ])
第3位とかにもマッチさせたくない場合は(?<![0-9.第])[0-9]+(?![0-9.月つヶ])かな?

他にも\dと[0-9]は同じだよね?とtwitterでつぶやきましたら
\dは全角数字も対象ですー(流星さん)
それが実は違うんですよー 参考「ものかの:正規表現の略記法 \d と \s と \w」 http://tama-san.com/?p=2687(ひらくん)
全角、半角で色々と不具合があるのでユニコード番号で当てた方が安全です。(MSさん)
正規表現のエンジンによってことなりますよー(こうちゃん)
のアドバイスをいただきました。この場を借りてお礼申し上げます。
しかし、最初に書いてから大幅に変わってしまうエントリーになったなw

2012年1月10日火曜日

正規表現の復習4

昨年暮れから正規表現の復習を始めたものの、また忘れてしまったのでメモ。
素材はOpenOfficeからコピペした文章ネタ。
余談ですが、この履歴書をアルバイトの面接先に提出してしまいました。。。orz
昭和53
3
静岡県立ホゲホゲ高等学校卒業
昭和54
4
東京の某大学なんちゃら学部入学
昭和60
3
東京の某大学なんちゃら学部卒業
エディタにペーストして↑になった文章を一発で下記の文章にしたいわけです。
昭和53年3月 静岡県立ホゲホゲ高等学校卒業
昭和54年4月 東京の某大学なんちゃら学部入学
昭和60年3月 東京の某大学なんちゃら学部卒業

EMエディタで(?<=\d)\n(?=\d)で検索し、年に置換。(?<=\d)\n(?=\D)で検索し、月 に置換するには、連続置換機能(マクロ)があれば便利なのですが、フリーのEMエディタにはそれがありません。ならばサクラエディタで!となったのですが、検索にマッチしません。

そこで秀丸を使ってみました。今まで秀丸を使わなかったのは、どこぞのblogで正規表現にクセがあるようなことが書かれていたからです。まぁ方言のことだと思います。

メモ:改行は秀丸、EMエディタで\n、サクラエディタは\r\n、InDesignでは\r。

ちなみにInDesignの正規表現では、後読みに繰り返しや選択が使えないとありますので、エディタで処理出来ることはエディタでやった方がベターですね。
結果、マクロで一発! 下記の文字も化けません^^
à è ì ò ù  á é í ó ú ý  â ê î ô û  ã ñ õ  ä ë ï ö ü ÿ   ç Ç ¿ ¡ © ® ™

復習ついでに数字以外にマッチさせる正規表現は\D
大文字にすれば以外の意だったんだよなぁ~。

ついでのついでに半角円マークを表示したければ&yen;を使えもメモ。
(でも面倒なのでこのblogではやりません^^)


↓バラバラに使用されたダブルクォーテーション括弧を



↓こんな風に整えるには


流星さんから教えてもらったやり方[“”]([^“”]+?)[“”]で検索、“\1”で置換(秀丸の場合)。InDesignでは“$1”になります。

こいつは「目から鱗」で感動しました^^ グループマーキング( )とグループ化された文字列\1の素晴らしい使い方の例です。DTPの勉強会 特別編・第1回やサイトで
グループを使用する目的は主に2つ。ひとつは検索文字列をキャプチャして、置換文字の「$1〜$9」で参照させること。もうひとつは、選択「|」を使用するときに選択境界をはっきりさせることである。たとえば、タブ区切りの列の順序を入れ替えたい時、文字列「hoge\tfuga\tpuyo」に対して、検索フィールドに正規表現「(.+?)\t(.+?)\t(.+?)\r」と書き、置換フィールドに「$3\t$2\t$1\r」と書けば、結果は「puyo\tfuga\thoge」となる。
が紹介されてましたが、応用力のないアチキはこれは思いつきませんでした。いや実に面白い^^