人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

秀丸エディタで正規表現の置換をやってたら、
「置換文字列が長すぎて処理できません」
というエラーがでてどうにも立ち行かなくなってしまいました。
秀丸エディタでなくてもいいんですが、長いテキストを正規表現で置換する回避策は何かないでしょうか?

●質問者: nagahito
●カテゴリ:コンピュータ
✍キーワード:エラー テキスト 回避 文字列 正規表現
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●27ポイント

>長いテキストを正規表現で置換する回避策

パターンの造りこみに問題があるのではないかと思います。

例えば .*aaa というパターンがあったとすれば

.* の部分は最悪の場合テキストファイル全体に及ぶ可能性があるわけです。

この場合の対処としては

(1).+や.*は極力使わない

(2)使う場合は改行コード\rなどを利用して長くなりすぎないように気をつける

といったような措置が必要になります。

もっと具体的な例を示せれば良いのですが

貴殿が「対象としているテキストファイルの内容」と「検索パターン」が判りませんので

ひとまずは正規表現の動作として上記のような事もあるという所までの回答とさせていただきます。


2 ● falcosapiens
●27ポイント

ジャンルとしてはGREP系ソフトですね。

正規表現に対応したテキストファイルの置換専用のソフトが多数ありますので、それらを試してみてはいかがでしょうか?

http://www.vector.co.jp/vpack/filearea/win95/util/text/find/


3 ● airplant
●26ポイント

kn1967さんの言う通りと思います。


ただ、秀丸の場合「.」の定義は、【改行を除く任意の1文字】になっているのでよっぽど横に長いテキストじゃない限りは、うまくいきそうです。


一度、置換じゃなく、検索でどこにマッチしているかを出してみれば、大体分かるかなと思います。

タグ(.*)で\1に置換がうまくいっていないということもあると思います。

もし、正規表現が問題なく、処理できる長さが不足しているのであれば、sedなどで処理できる可能性はあります。


http://www.vector.co.jp/soft/dos/util/se000880.html

◎質問者からの返答

ソフトの紹介ありがとうございます。

横に長いテキストなので表記エラーが出ています。

キャプチャして置換後にその文字列を出そうとしており、キャプチャ対象が短いフレーズなら通るんですが、長い場合には上記エラーとなります。

EmeditorやSpeeeedでも同じで、正規表現のdllの仕様なのかアプリケーションの仕様なのか、今のところ見当がつきません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ