- ベストアンサー
改行を含む正規表現について
すみません。どこのカテゴリで質問してよいのか判らなかったのですが 正規表現で改行を含むパターンはどの様に検索/置換すればよろしいのでしょうか? 例えば はじめ ↓ ↓ ↓ おわり はじめ ↓ おわり はじめ ↓ ↓ ↓ おわり の様に はじめからおわりまでをの複数の行数を含む パターンを検索するにはどう表記すればよいのでしょか ちなみに秀丸では はじめ(\n.*)*おわり では検索できませんでした。 ご存知の方 手ほどきの程よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
> sed&awk・・・ > 知り合いのLINUX使いが 良いから覚えろといいますが、Awkとか覚えるのがめんどくさそうで・・・ windowsで簡単に使えますか? > おすすめサイトなどあったら教えてください まあ使いこなそうと思えば結構奥が深いですけど、ちょっとした置換をするくらいなら そんなに覚えることはないですよ。 でまあGUIみたいな飾りはありませんが gawk http://www.kt.rim.or.jp/~kbk/gawk-3.1 sed http://www.kt.rim.or.jp/~kbk/sed あとはvectorとか Download: Windows95/98/Me用ソフト > ユーティリティ > テキストファイル用 > AWK http://www.vector.co.jp/vpack/filearea/win95/util/text/awk/ 入門になりそうなページを探してみましたが意外にないものですね。 一子相伝で伝えられるものなんでしょうか(笑) Awkプログラミング入門講座-はじめに http://homepage2.nifty.com/mozu/koza/awk_koza/awk_koza_00.html UNIXコマンドの使い方 http://www.iis.u-tokyo.ac.jp/~susaki/command/c_sed.html IBM 共通テーマ: 実例でわかるsed: 第1回 - Japan http://IBM 共通テーマ: 実例でわかるsed: 第2回 - Japan http://www-06.ibm.com/jp/developerworks/linux/010216/j_l-sed2.html http:www-06.ibm.com/jp/developerworks/linux/010202/j_l-sed1.html IBM 共通テーマ: 実例でわかるsed: 第3回 - Japan http://www-06.ibm.com/jp/developerworks/linux/010223/j_l-sed3.html 参考までに「はじめ」と「おわり」に挟まれた部分だけを切り出したい場合 sed -n -e "/はじめ/,/おわり/p" こんだけです。
その他の回答 (7)
例えば、改行が間に1~4個の場合は、 (はじめ\nおわり|はじめ\n\nおわり|はじめ\n\n\nおわり|はじめ\n\n\n\nおわり) で検索する事が出来ました。 面倒ですが、仕方ないでしょう。
- maura
- ベストアンサー率46% (48/104)
改行をいったん別の文字列に置き換えを すれば、可能です。 他にversion 6 では、 その他 -> ファイルタイプ別の設定 に 複数行コメントの設定で 開始文字列 終了文字列を 指定でき、強調表示して見る事ができます。
お礼
返答有難うございます。 ファイルが膨大で改行を使ってない文字にあてはめるということですか? それは怖くてできないですね。 有難うございました。
>3行以上の任意の行数のマッチングをするのは多分直接には無理 そっかぁ 秀丸の正規表現はそんなになってるのか・・・ 他のエディタでやってみるのはだめかなぁ。 この辺り http://jp.emeditor.com/ http://k2top.jpn.org/index.php?K2Editor emは売り物に見えてフリー版が有るよ。 K2は内部がUTFに非対応だからUTF使うのには向かない
お礼
em よさそうですね・・・ ただ もうエディタを変えるのがもうめんどうで メモ帳→テラパッド→サクラエディタ→秀丸→gvim ときてるので もういい加減疲れた・・・・・・・ 機会があれば 使ってみます。有難うございました。
- sakusaker7
- ベストアンサー率62% (800/1280)
#1です。 #3の方の挙げられたリンク先のデータが古い(jre32.dll使用)ような気がしたので 改めて調べてみましたが、現状(hmjre.dll使用の場合)でも、 > 例えば、「\n+」という正規表現は、秀丸 > エディタでは\nが1つ含まれているものと > 解釈し、2行単位で検索処理します。した > がって、空行が3行連続していても、その > うちの2行分にしかヒットしません。 とヘルプにありましたので、3行以上の任意の行数のマッチングを するのは多分直接には無理だと思います。 実際簡単なパターンで試してみましたが、\nの扱いは ヘルプどおりでした。 マクロを駆使すれば何とかできそうな気もしますが それはまた別の話ということで。 sedとかawkつかっていいという話ならラクなんですが。
お礼
返答有難うございます。 結局、他ツールでBREGEXP DLLを使用して(\r\n)でいけました。 sed&awk・・・ 知り合いのLINUX使いが 良いから覚えろといいますが、Awkとか覚えるのがめんどくさそうで・・・ windowsで簡単に使えますか? おすすめサイトなどあったら教えてください
- kumoz
- ベストアンサー率64% (120/185)
秀丸のユーザではありませんが、秀丸では \n を含む正規表現は正常に 処理できないようです。下記の URL の最後の方をご覧下さい。
お礼
返答有難うございます。 結局 無理みたいですね・・・・ 皆どうしてるのでしょうかね
^\n+おわり 置換目的(改行削除)なら ^\n+(おわり) \n で反応しないなら (\r\n)+ あるいは \r+
お礼
結局、秀丸ではの無理?だったので、 あるツールでBREGEXP DLLを使用して(\r\n)でいけました。 どうも有難うございました。
- sakusaker7
- ベストアンサー率62% (800/1280)
今手元に秀丸がないので確認できないのですが、 はじめ(.|\n)*おわり でいけませんか? これだと仮に改行を拾えても最長マッチになるので 期待の結果にはなりませんが。 #*→*? でいいかな?
お礼
返答有難うございます。 無理ででした。・・・・
補足
返答有難うございます。 実際ははじめから終わりまでの間はただの改行では無く、文字が混在し、その上はじめからおわりまでの間が50行あったり300行あったりします。さらにそれを置換したかったわけで・・・ ここをもし見る人の為に参考に結果を書いておきます。 ある置換ツールで BREGEXP DLLを使用し、 はじめ\r\n(.*\r\n){0,10000}おわり\r\n→それを置換 で思ってた結果が出すことができました。