• ベストアンサー

秀丸での正規表現

 秀丸エディタVersion 7.11、HMJRE.DLL V1.92 を使用しています。  下記上のような4行のテキストファイルから、数字以外で始まる行を空行に置換しようと思い、検索文字列を「^[^0-9].*」、置換文字列を「」(なし)に設定したのですが、3行目のx だけからなる行は削除されませんでした(下記下のようになりました。このとき、カーソルは変換後の2行目の一番左のx の右側にあります)。 置換前 >11111 > >xxxxx >[EOF] 置換後 >11111 >xxxxx カーソルは左端のx の右側 >[EOF]  11111 とxxxxx の間にもう1行空行を入れると、所望の動作となります。  正規表現の指定が間違っているのでしょうか。

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

  • ベストアンサー
noname#194317
noname#194317
回答No.2

正規表現としては、それで正しいです(sed -e "s/^[^0-9].*/で確認)。なのに置換がうまくいかないとしたら、その空行の部分に何か変な制御コードが紛れ込んでいるか、ソフト側のバグと言うことになるでしょう。 空行を追加するといけるという点が引っかかります。ひょっとして行末にある改行コードがCR+LFではないのでは?試しに空行の改行コードを削除して、秀丸でEnterを打ち込んで保存し、そのファイルで試してはどうでしょう。

その他の回答 (1)

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは  正規表現はパターンを表現するものなのですよね。  否定の連続だと対象を明確に捉えることが難しいので、単純に消したいものを指定してはダメですか? ^[A-Za-z亜-龠][A-Za-z亜-龠][A-Za-z亜-龠][A-Za-z亜-龠]$  上記は、行の先頭から行末までに英字と漢字のいずれかが4文字あったらパターンがマッチしたとする例です。  必ず4つの文字が同じ文字ならマッチした1文字のパターンを保存して(こんなこと秀丸で出来たっけ?)、4文字のパターンにすると更に曖昧さがなくなると思います。  ご指定のパターンの場合、数字以外なら「なんでもよい文字(文字コード表には制御コードも文字として存在します)」を指定しているので思ったように動いてくれないと感じられたのだと思います。

関連するQ&A

  • 秀丸エディタの正規表現

    秀丸エディタの正規表現 これから述べる置換処理について教えてください。 条件を表現します。 まず半角空白文字を _ このように全角アンダースコアであらわします。 そしてマッチさせたいSTRINGは _ このように半角空白文字がそれ以外の文字に前後をはさまれている状態ではなくて、 、 __ このように半角空白文字二個もしくは二個以上続いたものが半角空白文字以外に挟まれているパターンです。 。 ちなみに置換後の文字列は __ ですつまり空白半角文字列二個です。 よってこの質問は次のようにも言い換えられます。 。 検索文字列 半角空白文字二個以上 を置換後文字列 半角空白文字二個に置き換える。もしくは、半角空白文字三個以上を 置換後文字列 半角空白文字二個に置き換える。 というのが質問です。おねがいします。 すみませんつけたしです。上記を実現する正規表現を教えてください。

  • さくらエディタと秀丸との正規表現の違い

    こんにちは。サクラエディタと秀丸エディタを使っています。普段は秀丸エディタを使用しています。本日たまたまサクラエディタを使って、以下の文字を置換しようとしました。「\n」→「,」。 abced\n fghijk\n fddsafafa\n \nは改行と思ってください。これをやると下記のように置換されました。 abced\n ,fghijk\n ,fddsafafa\n しかし、秀丸で同じようなことをやると、 abced,fghijk,fddsafafa, っとなります。なぜこのような違いが起きるのでしょうか?やりたいことはいたってシンプルで、改行をカンマに置き換えたいといったことだけですのに。 以上、よろしくお願いします。 ,

  • 秀丸で正規表現を使って置換

    あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。

  • 秀丸の置換で正規表現を使う方法を教えてください

    お世話になります 秀丸エディタの置換を用いて、 (’.ab12#-cd’)のような文字列や数字、記号のまじった ( )から( )の中身を検索置換して (’’)にしたいと考えています。 具体例 (’.ab12#-cd’) (’.ab#37-c’) (’..ab-82#d%’) (’.12jg+#ppv’) (’.ab12lentext’)から ↓ (’’)に置換したい。 秀丸を使うときはあっても単純な 一文字程度の検索置換しかおこなったことがなく どうにも方法がうかばなかったところ 友人から、正規表現というものを 使えば実現できるようだと聞きました。 友人も残念ながら、プログラミングの経験は あまりなくて正規表現での記述方法は わからないいうことでした。 正規表現を使ってこれを実現する方法を 教えていただけませんでしょうか よろしくお願いいたします

  • 秀丸で正規表現による置換

    正規表現でつまずいてしまったので教えてください。 こういうデータがあったとして ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ,,E,77774000,13,77770004479,〇〇〇,0,,,,,l_ ,,E,77774000,21,77770004478,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ,,E,88884000,14,88880004479,〇〇〇,0,,,,,l_ ,,E,88884000,20,88880004478,〇〇〇,0,,,,,l_ 6列目に77770004480があったら、5列目の1を10にする。 6列目に88880004480があったら、5列目の5を10にする。 という事がしたいのですが、7777や8888の部分は必ず数字4桁で固定ですが、 実際には0000-9999まであるため、1万回置換するのは面倒です。 そこで、0004480があったら、ヒットする1や5を10に置き換える事がしたいのですが どのようにしたらいいでしょうか? また、12を2に置き換えることもあるので、5列目は 必ず数字ですが、1桁または2桁となります。 正規表現置換で使用するエディタは、秀丸です。 ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ↓ ,,E,77774000,10,77770004480,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ↓ ,,E,88884000,10,88880004480,〇〇〇,0,,,,,l_ 以上よろしくおねがいいたします

  • 秀丸での正規表現(文字の抜き出し)について

    複数行のテキストデータがあり、それぞれの先頭文字だけを抜き出したいと思っています。 あいうえお かきくけこ さしすせそ ↓ あ か さ 秀丸エディタでどのように記述すればいいのか教えてください。 よろしくお願いいたします。

  • 秀丸の行数

    秀丸で空行と文字のかいてある行があるのですが、 文字の書いてある行のみで、何行あるのか、 簡単に調べる方法はないでしょうか? よろしくお願いします。 f12しかない?

  • 正規表現で前方一致を実現したい

    お世話になります。 正規表現を用いて、ある特定の文字を前方一致で検索し、ヒットしたその文字以前のを置換する、ということを実現するにはどのような記述をすればよいのか分からず困っています。 たとえば、  あいうえお&かきくけこ&さしすせそ という文字列があったとき、最初の「&」以前だけを削り、結果、下記のような文字列を取得したい場合、どのような記述をすればよいでしょうか。  かきくけこ&さしすせそ これを秀丸エディタ上で実現したいです。 宜しくお願いします。

  • 秀丸エディタ 正規表現 指定文字範囲内の文字を置換

    秀丸エディタで改行含む複数行の文字列を置換したいのです。 たとえばHTMLファイルの ■置換前 <div id="Header"> ~~ ~~ ~~ <!-- /Header --></div> ■置換後 <div id="Header"> AAAA <!-- /Header --></div> となるようにしたいですが 「~~」の中は規則性のある記述になっておりません。 文中に半角スペースが入っていたり、行頭のインデントが揃ってなかったり タグの順番も統一されておりません。 上記は例としてあげてますが実際は100行近くあり、ファイル数も数百ファイルあります。 ひとつだけ分かってるのは <div id="Header"> と <!-- /Header --></div> の記述は存在するので、この範囲内の文字列をどうにか選択できないか教えていただけないでしょうか。 正規表現でなくても実現できるフリーツールでも構いません よろしくお願いいたします。

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

専門家に質問してみよう