- ベストアンサー
秀丸での正規表現
秀丸エディタVersion 7.11、HMJRE.DLL V1.92 を使用しています。 下記上のような4行のテキストファイルから、数字以外で始まる行を空行に置換しようと思い、検索文字列を「^[^0-9].*」、置換文字列を「」(なし)に設定したのですが、3行目のx だけからなる行は削除されませんでした(下記下のようになりました。このとき、カーソルは変換後の2行目の一番左のx の右側にあります)。 置換前 >11111 > >xxxxx >[EOF] 置換後 >11111 >xxxxx カーソルは左端のx の右側 >[EOF] 11111 とxxxxx の間にもう1行空行を入れると、所望の動作となります。 正規表現の指定が間違っているのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
正規表現としては、それで正しいです(sed -e "s/^[^0-9].*/で確認)。なのに置換がうまくいかないとしたら、その空行の部分に何か変な制御コードが紛れ込んでいるか、ソフト側のバグと言うことになるでしょう。 空行を追加するといけるという点が引っかかります。ひょっとして行末にある改行コードがCR+LFではないのでは?試しに空行の改行コードを削除して、秀丸でEnterを打ち込んで保存し、そのファイルで試してはどうでしょう。
その他の回答 (1)
- A88No8
- ベストアンサー率52% (836/1606)
こんにちは 正規表現はパターンを表現するものなのですよね。 否定の連続だと対象を明確に捉えることが難しいので、単純に消したいものを指定してはダメですか? ^[A-Za-z亜-龠][A-Za-z亜-龠][A-Za-z亜-龠][A-Za-z亜-龠]$ 上記は、行の先頭から行末までに英字と漢字のいずれかが4文字あったらパターンがマッチしたとする例です。 必ず4つの文字が同じ文字ならマッチした1文字のパターンを保存して(こんなこと秀丸で出来たっけ?)、4文字のパターンにすると更に曖昧さがなくなると思います。 ご指定のパターンの場合、数字以外なら「なんでもよい文字(文字コード表には制御コードも文字として存在します)」を指定しているので思ったように動いてくれないと感じられたのだと思います。