秀丸エディタで正規表現の置換をやってたら、

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

回答の条件
  • 1人5回まで
  • 登録:2007/07/10 17:55:01
  • 終了:2007/07/17 17:55:20

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/07/10 18:40:16

ポイント27pt

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

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

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

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

この場合の対処としては

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

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

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

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

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

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

id:falcosapiens No.2

falcosapiens回答回数126ベストアンサー獲得回数132007/07/10 20:16:04

ポイント27pt

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

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

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

id:airplant No.3

airplant回答回数220ベストアンサー獲得回数492007/07/11 03:53:29

ポイント26pt

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


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


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

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

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


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

id:washita

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

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

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

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

2007/07/11 09:39:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません