指定した文字列以下をNo.04562
fixerXVI さん 05/01/09 23:06
 
以前、Z-Musicコンパイルの件で質問したものです。
その節はありがとうございました。

指定した文字列 で検索しましたが、「挿入」が載っていたので
逆に「指定した文字列以下を(行末まで、改行は削除しないで)削除」
というのができないかと思って質問です。

具体的には
--
1 crystal vine 5:55 DCT[改行]
2 未来予想図 8:21 SuperMachine[改行]
3 a little waltz 4:18 Elvis[改行]
--
の中で、「5:55 DCT」
「08:21 SuperMachine」
「04:18 Elvis」
を削除して、改行は残したいのです。

x:xxを指定するのは[0-9]:[0-9][0-9]でいいのですが、
半角スペースを含むその後に続くDCTなどの任意の文字列を削除する表現がよく分か
りませんでした。

基本的なことで申し訳ありませんがご教示頂きたく存じます。

[ ]
RE:04562 指定した文字列以下をNo.04563
きいろいまふらあ さん 05/01/10 01:42
 
秀丸ユーザの(たまにマクロも書く)きいろいまふらあと申します。

>指定した文字列 で検索しましたが、「挿入」が載っていたので
>逆に「指定した文字列以下を(行末まで、改行は削除しないで)削除」
>というのができないかと思って質問です。

>x:xxを指定するのは[0-9]:[0-9][0-9]でいいのですが、
>半角スペースを含むその後に続くDCTなどの任意の文字列を削除する表現がよく分か
>りませんでした。

マクロに限った話ではありませんが、「.*」で(改行をまたがない)0文字以上
の任意の文字列にマッチしますので

「[0-9]:[0-9][0-9]」にマッチする文字列から改行の手前まで

にマッチさせるなら「[0-9]:[0-9][0-9].*」となります。

(余談1)

「08:21 SuperMachine」というようなケースがあるようなないような雰囲気です
が、このような文字列も相手にしたいなら「[0-9]+:[0-9][0-9].*」でしょうか。

(余談2)

1 1:23amに会いましょう 4:32 hogehoge[改行]

なんてデータがあると「1:23」以降にマッチしてしまいます。さらに

1 hogehoge 4:32 1:23amに会いましょう[改行]

なんてデータもあるかもしれませんしね。難しいですね。

これらに対応するのは結構面倒ですね。半角空白で区切られていることなんかを
利用すればよいのかもしれませんが、処理するデータのフォーマットがどうなっ
ているのか次第なんですけどね。

[ ]
RE:04563 指定した文字列以下をNo.04564
fixerXVI さん 05/01/10 11:03
 
>秀丸ユーザの(たまにマクロも書く)きいろいまふらあと申します。

あけましておめでとうございます。
あ、秀丸の本に載ってた方ですね!恐縮です

>「[0-9]:[0-9][0-9]」にマッチする文字列から改行の手前まで
>にマッチさせるなら「[0-9]:[0-9][0-9].*」となります。

分かりました。
これだと半角スペースがあってもなくてもいいのですね。

>
>「08:21 SuperMachine」というようなケース
>も相手にしたいなら「[0-9]+:[0-9][0-9].*」でしょうか。

なるほど!!大変ありがたいです。
本を読んでも今ひとつ分かりづらかったので感謝です。


>1 1:23amに会いましょう 4:32 hogehoge[改行]
>なんてデータがあると「1:23」以降にマッチしてしまいます。さらに
>1 hogehoge 4:32 1:23amに会いましょう[改行]
>なんてデータも

そうですね。CD-TEXTを吸い出した曲名に時間表記があったりするとちょっとやっか
いです…。
気づきませんでした。
今のところこの事例には当たってないのですが、

01.明日の1:23amは晴れ 4:22 Broken exellent[改行]
2.昨日の3:45pmは雨 5:56 Broken exellent[改行]

こういった場合は
ピリオド以下の文節以外で、の条件をつけた方がいいようですね。

[ ]