• ベストアンサー

テキストエディタの置換もしくはPerlで

Pdicの一行形式なのですが、 あ /// / 母音の一 あ /// 足 / あし あ /// 畔・畦 / 田のあぜ これを あ /// / 母音の一 あ【足】 /// / あし あ【畔・畦 】 /// / 田のあぜ のように一気に置換する方法はありますか? 「/// ~ /」 の、「~」の部分には様々な文字列が並んでいる(文字列がない場合もある)ので、 おそらく無理かなとも思っています。 Perlかなにかで一気にできそうな気もするのですが、Perlの知識はゼロですのでなんとかエディタでできないかと・・・ あまり知識がないので質問する場所が違っているかもしれません。。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.4

すみません、pdicの1行形式というものが良く分かっていませんでした。 http://homepage3.nifty.com/TaN/unicode/help/OneLineFormat.html こういうルールに沿っているんですね となると、若干シンプルに出来るかと思います。 <元データ> あ /// / 母音の一 あ /// 足 / あし あ /// 畔・畦 / 田のあぜ あい /// 合い・会い / アヒ \ 名 \ あうこと。出会い… <置換前(正規表現)> ^([^/\s]+) /// ((?:[^/\s]| \\ )+) / (.*)$ <置換後> $1【$2】 /// / $3 ↓ <変換後> あ /// / 母音の一 あ【足】 /// / あし あ【畔・畦】 /// / 田のあぜ あい【合い・会い】 /// / アヒ \ 名 \ あうこと。出会い…

kokkokko
質問者

お礼

Pdicも見ていただいたようで、わざわざありがとうございます! 【~】の文字列にスペースが入っているものは置換されませんでしたが、教えていただいた表現を試行錯誤してこれも置換できる表現を見つけました! 無事すべて置換できました。 ありがとうございました!!

その他の回答 (3)

  • sholmes
  • ベストアンサー率81% (89/109)
回答No.3

おそらく、半角スペースをエスケープする「 \ 」という表現があると言うことなんだと思います。 応急処置ですが、正規表現を次のものに差し替えてみてください ^([^/\s]+?)( /// )([^/\s]+?) (/ ([^/\s]| \\ )+)$

  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

正規表現を使った解決の一例を記載します。 尚、置換例「畦」後の半角スペースは誤字だろうと判断し、除外しています。 ------------------------------------------------- <環境> サクラエディタ + bregonig.dll(2.0.2) <元データ> あ /// / 母音の一 あ /// 足 / あし あ /// 畔・畦 / 田のあぜ <置換前> ^([^/\s]+?)( /// )([^/\s]+?) (/ [^/\s]+)$ 正規表現 チェックボックスをオン <置換後> $1【$3】$2$4 ↓ <変換後> あ /// / 母音の一 あ【足】 /// / あし あ【畔・畦】 /// / 田のあぜ ------------------------------------------------- 同じ事をRubyで記載するとこんな感じです。 SAMPLEの部分をARGF等にして利用してください http://ideone.com/OMlgA ※ideone.comの設定仕様かもしれませんが、ARGFを利用 すると文字コード関連エラーが出ました。 -------------------------------------------------

kokkokko
質問者

お礼

回答ありがとうございます。 早速試したところおーっとうまくいったのですが、行中に あい /// 合い・会い / アヒ \ 名 \ あうこと。出会い… と「\」が入っている行は置換されませんでした。 このような場合でもうまく置換できる表現はあるのでしょうか? またまた質問してしまって申し訳ありませんが、もしお時間があればよろしくお願いします(もちろん自分でも探してみます!)。

  • abacabu
  • ベストアンサー率37% (250/663)
回答No.1

特定の段落を変更したいって事ですよね?テキストエディタで指定文字列を指定して、 変更後の文字列を指定すれば変更できますよ? めちゃっくちゃ文字列が長くても最初に指定しておいてから開けば問題ないです。 まぁコピーしておくのが無難です。 あ /// / 母音の一 あ* /// 足 /* あし あ* /// 畔・畦 /* 田のあぜ * この部分の文字列を摘出して あ /// / 母音の一 あ+【足】 /// /+ あし あ+【畔・畦 】 /// /+ 田のあぜ +この部分を置き換えとして指定すればそれ程もんだいないかと? ちなみにTeraPadだと可能ですし、基本的に最初の置き換え時に「以後全て」を 選択しなければ1か所ずつ確認しながら置き換えが出来ます。 テキストエディタの利点はまさにここだと思います。 滅茶苦茶長い場合記入欄が小さいので(特定語句を変換する目的の為?) 置き換え項目の変更がしにくくはあります。 ですが手作業で全て変更する事を考えれば至って楽です。

kokkokko
質問者

お礼

回答ありがとうございます。 一行形式で辞書を作っているのですが、行数が何十万行とあってその行すべてで質問したような作業を行いたいのです。 しかもすべての行で、行の先頭部分のみ置換したいのです。 まず回答してくださった方法で試してみることにします。

関連するQ&A