プロが教えるわが家の防犯対策術!

すみません。どこのカテゴリで質問してよいのか判らなかったのですが
正規表現で改行を含むパターンはどの様に検索/置換すればよろしいのでしょうか?

例えば
はじめ



おわり
はじめ

おわり
はじめ



おわり

の様に はじめからおわりまでをの複数の行数を含む パターンを検索するにはどう表記すればよいのでしょか
ちなみに秀丸では はじめ(\n.*)*おわり では検索できませんでした。
ご存知の方 手ほどきの程よろしくお願いします。

A 回答 (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/uti …

入門になりそうなページを探してみましたが意外にないものですね。
一子相伝で伝えられるものなんでしょうか(笑)

Awkプログラミング入門講座-はじめに
http://homepage2.nifty.com/mozu/koza/awk_koza/aw …
UNIXコマンドの使い方
http://www.iis.u-tokyo.ac.jp/~susaki/command/c_s …
IBM 共通テーマ: 実例でわかるsed: 第1回 - Japan
http://IBM 共通テーマ: 実例でわかるsed: 第2回 - Japan
http://www-06.ibm.com/jp/developerworks/linux/01 …
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/01 …

参考までに「はじめ」と「おわり」に挟まれた部分だけを切り出したい場合

sed -n -e "/はじめ/,/おわり/p"

こんだけです。
    • good
    • 0

例えば、改行が間に1~4個の場合は、


(はじめ\nおわり|はじめ\n\nおわり|はじめ\n\n\nおわり|はじめ\n\n\n\nおわり)
で検索する事が出来ました。

面倒ですが、仕方ないでしょう。

この回答への補足

返答有難うございます。
実際ははじめから終わりまでの間はただの改行では無く、文字が混在し、その上はじめからおわりまでの間が50行あったり300行あったりします。さらにそれを置換したかったわけで・・・

ここをもし見る人の為に参考に結果を書いておきます。
ある置換ツールで BREGEXP DLLを使用し、
はじめ\r\n(.*\r\n){0,10000}おわり\r\n→それを置換
で思ってた結果が出すことができました。

補足日時:2007/03/10 23:33
    • good
    • 0

改行をいったん別の文字列に置き換えを


すれば、可能です。

他にversion 6 では、
その他 -> ファイルタイプ別の設定 に
複数行コメントの設定で 開始文字列 終了文字列を
指定でき、強調表示して見る事ができます。
    • good
    • 0
この回答へのお礼

返答有難うございます。
ファイルが膨大で改行を使ってない文字にあてはめるということですか? それは怖くてできないですね。
有難うございました。

お礼日時:2007/03/10 23:18

>3行以上の任意の行数のマッチングをするのは多分直接には無理


そっかぁ 秀丸の正規表現はそんなになってるのか・・・
他のエディタでやってみるのはだめかなぁ。

この辺り
http://jp.emeditor.com/
http://k2top.jpn.org/index.php?K2Editor
emは売り物に見えてフリー版が有るよ。
K2は内部がUTFに非対応だからUTF使うのには向かない
    • good
    • 0
この回答へのお礼

em よさそうですね・・・
ただ もうエディタを変えるのがもうめんどうで
メモ帳→テラパッド→サクラエディタ→秀丸→gvim ときてるので もういい加減疲れた・・・・・・・
機会があれば 使ってみます。有難うございました。

お礼日時:2007/03/10 23:15

#1です。


#3の方の挙げられたリンク先のデータが古い(jre32.dll使用)ような気がしたので
改めて調べてみましたが、現状(hmjre.dll使用の場合)でも、

> 例えば、「\n+」という正規表現は、秀丸
> エディタでは\nが1つ含まれているものと
> 解釈し、2行単位で検索処理します。した
> がって、空行が3行連続していても、その
> うちの2行分にしかヒットしません。

とヘルプにありましたので、3行以上の任意の行数のマッチングを
するのは多分直接には無理だと思います。
実際簡単なパターンで試してみましたが、\nの扱いは
ヘルプどおりでした。

マクロを駆使すれば何とかできそうな気もしますが
それはまた別の話ということで。
sedとかawkつかっていいという話ならラクなんですが。
    • good
    • 0
この回答へのお礼

返答有難うございます。
結局、他ツールでBREGEXP DLLを使用して(\r\n)でいけました。

sed&awk・・・
 知り合いのLINUX使いが 良いから覚えろといいますが、Awkとか覚えるのがめんどくさそうで・・・
windowsで簡単に使えますか?
おすすめサイトなどあったら教えてください

お礼日時:2007/03/10 23:10

秀丸のユーザではありませんが、秀丸では \n を含む正規表現は正常に


処理できないようです。下記の URL の最後の方をご覧下さい。

参考URL:http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_ …
    • good
    • 0
この回答へのお礼

返答有難うございます。
結局 無理みたいですね・・・・
皆どうしてるのでしょうかね

お礼日時:2007/03/10 23:05

^\n+おわり



置換目的(改行削除)なら
^\n+(おわり)

\n で反応しないなら (\r\n)+ あるいは \r+
    • good
    • 0
この回答へのお礼

結局、秀丸ではの無理?だったので、
あるツールでBREGEXP DLLを使用して(\r\n)でいけました。
どうも有難うございました。

お礼日時:2007/03/10 23:04

今手元に秀丸がないので確認できないのですが、


はじめ(.|\n)*おわり
でいけませんか?
これだと仮に改行を拾えても最長マッチになるので
期待の結果にはなりませんが。
#*→*? でいいかな?
    • good
    • 1
この回答へのお礼

返答有難うございます。
無理ででした。・・・・

お礼日時:2007/03/10 22:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!