範囲全体を置換No.08231
kukai さん 01/04/04 09:42
 
範囲全体すなわち、単語に含まれている最初の文字列より、数単語後の最後の文字ま
でを検索し置換することは可能でしょうか?
例えば、<abcdef....xyg>abcd....xyzと文章があったとします。
そこで最初の文字である < から最後の文字 > までを検索し、そのずべてをス
ペースに置換すると言う事なのですが。よろしくお願いいたします

[ ]
RE:08231 範囲全体を置換No.08232
ながさわ さん 01/04/04 10:07
 
こんにちは、長澤です。

>例えば、<abcdef....xyg>abcd....xyzと文章があったとします。
>そこで最初の文字である < から最後の文字 > までを検索し、
>そのずべてをスペースに置換すると言う事なのですが。

秀丸の置換で『選択範囲のみ』は必ず改行を含む必要があるので、そのままでは置換
できません。
そこで、置換の対象範囲を(わかりやすいように)改行で区切って、そこを選択。で、
置換のダイアログで正規表現を使う状態にして、検索文字列は“.”(ピリオド)、
置換文字列は“ ”(スペース)で置換します。
その後、挿入した余分な改行を削除すれば、お望みの処理かと思いますが、いかがで
しょう?

[ ]
RE:08232 範囲全体を置換No.08233
kukai さん 01/04/04 10:19
 
>こんにちは、長澤です。
>
>>例えば、<abcdef....xyg>abcd....xyzと文章があったとします。
>>そこで最初の文字である < から最後の文字 > までを検索し、
>>そのずべてをスペースに置換すると言う事なのですが。
>
>秀丸の置換で『選択範囲のみ』は必ず改行を含む必要があるので、そのままでは置
>換できません。
>そこで、置換の対象範囲を(わかりやすいように)改行で区切って、そこを選択。
>で、置換のダイアログで正規表現を使う状態にして、検索文字列は“.”(ピリオ
>ド)、置換文字列は“ ”(スペース)で置換します。
>その後、挿入した余分な改行を削除すれば、お望みの処理かと思いますが、いかが
>でしょう?

少し言葉足らずだったかもしれません。あるファイルの中身を覗いたところ、次のよ
うになっておりました。
<abcdefg>12345
<abcdeop>12369
<abcdeke>19403
<abcde90>3430d
<abke039>9kkd0
必要なのは>以降なので、最初にくっついた<...>をすべて一括して取り除こうとして
おります。(実はデータベース)
この場合何かよい考えはございますか?

[ ]
RE:08233 範囲全体を置換No.08234
きいろいまふらあ さん 01/04/04 10:44
 
最初の発言を読んで、「もとと同じ文字数のスペースに置換する」って話だと
思ってしばらく考えていたのですが、大はずしのようで……。(^^;

> <abcdefg>12345
> <abcdeop>12369
> <abcdeke>19403
> <abcde90>3430d
> <abke039>9kkd0
> 必要なのは>以降なので、最初にくっついた<...>をすべて一括して取り除こうとして

各行最初に現れる「>」までを削除なら

 検索文字列:[^>]*>
 置換文字列:(空欄)
 正規表現:ON

各行最後に現れる「>」までを削除なら

 検索文字列:.*>
 置換文字列:(空欄)
 正規表現:ON

ってなとこでしょうか。
元のデータの規則性に応じて、最適な方法は変わってきますが。
桁数が固定なら、置換などせずに「BOX選択してDEL」でいいですよね。

[ ]
RE:08234 範囲全体を置換No.08235
kukai さん 01/04/04 10:57
 
>
>各行最初に現れる「>」までを削除なら
>
> 検索文字列:[^>]*>
> 置換文字列:(空欄)
> 正規表現:ON
>
>各行最後に現れる「>」までを削除なら
>
> 検索文字列:.*>
> 置換文字列:(空欄)
> 正規表現:ON
>
>ってなとこでしょうか。
>元のデータの規則性に応じて、最適な方法は変わってきますが。
>桁数が固定なら、置換などせずに「BOX選択してDEL」でいいですよね。

完璧でした。ありがとうございました。なんといっても2万行を越える行数には時間
かかりましたが。ありがとうございます

[ ]
RE:08234 範囲全体を置換No.08236
かかし さん 01/04/04 10:59
 
かかしです、こんにちは。

kukaiさん、ながさわさん、きいろいまふらあさん、こんにちは。

#ちゃちゃモードです。

>最初の発言を読んで、「もとと同じ文字数のスペースに置換する」って話だと
>思ってしばらく考えていたのですが、大はずしのようで……。(^^;
>
>> <abcdefg>12345
>> <abcdeop>12369
>> <abcdeke>19403
>> <abcde90>3430d
>> <abke039>9kkd0
>> 必要なのは>以降なので、最初にくっついた<...>をすべて一括して取り除こうとして
>
>各行最初に現れる「>」までを削除なら
>
> 検索文字列:[^>]*>
> 置換文字列:(空欄)
> 正規表現:ON
>
>各行最後に現れる「>」までを削除なら
>
> 検索文字列:.*>
> 置換文字列:(空欄)
> 正規表現:ON

題意からすると「最初にくっついた」なので、

 検索文字列:^[<]<[^>]*>
 置換文字列:(空欄)
 正規表現:ON

ですかねえ。

<abcde>124356<aabbcc>
は、
124356<aabbcc>
と置換されます。

ただ、「最初にくっついた」が「行頭にある」でなかったら
面倒な話になるかな。
 <abcde>124356<aabbcc>
↑スペースや任意の文字があった場合

---かかし

[ ]
RE:08236 範囲全体を置換No.08237
TAKA さん 01/04/04 12:09
 
TAKA です。

> 検索文字列:^[<]<[^>]*>

 検索文字列:^<[^>]*>
の間違いだと思います。


>ただ、「最初にくっついた」が「行頭にある」でなかったら
>面倒な話になるかな。
> <abcde>124356<aabbcc>
>↑スペースや任意の文字があった場合

きいろいまふらあさんの書かれた方法で、問題ないと思うのですが。
先頭の任意の文字を残したいなら、「<[^>]*>」でいいと思います。

[ ]
RE:08237 範囲全体を置換No.08238
TAKA さん 01/04/04 12:20
 
TAKA です。

>>ただ、「最初にくっついた」が「行頭にある」でなかったら
>>面倒な話になるかな。
>> <abcde>124356<aabbcc>
>>↑スペースや任意の文字があった場合
>
>きいろいまふらあさんの書かれた方法で、問題ないと思うのですが。
>先頭の任意の文字を残したいなら、「<[^>]*>」でいいと思います。

以下のようなデータを
A<abcde>124356<aabbcc>

先頭の任意のデータを残したまま、
A124356<aabbcc>
このように置換したい場合のことですね。
私の勘違いでした。失礼しました。

確かに、正規表現一発では、出来ないかも。

今回は、このようなデータはないとは思いますが。

[ ]
RE:08237 範囲全体を置換No.08241
かかし さん 01/04/04 12:44
 
かかしです、こんにちは。

TAKAさん、こんにちは。

>TAKA です。
>
>> 検索文字列:^[<]<[^>]*>
>
> 検索文字列:^<[^>]*>
>の間違いだと思います。

そうでした。ご指摘ありがとうございます。m(_ _)m


>以下のようなデータを
>A<abcde>124356<aabbcc>
>
>先頭の任意のデータを残したまま、
>A124356<aabbcc>
>このように置換したい場合のことですね。
>私の勘違いでした。失礼しました。

この場合は
 検索文字列:^[^<]*<[^>]*>
ですね。

頭の中で整理する前に書いていたため、ごちゃごちゃになってしまいました。
お恥ずかしい・・(*^^*)

---かかし

[ ]
RE:08238 範囲全体を置換No.08243
番頭++ さん 01/04/04 12:57
 
>A<abcde>124356<aabbcc>
>先頭の任意のデータを残したまま、
>A124356<aabbcc>

replacedown "^[^<]+\\f<[^>]+>\\f.*$", "\\0\\2", regular, ask;

>私の勘違いでした。失礼しました。

あちきの勘違いですか ...


[ ]
RE:08241 範囲全体を置換No.08244
TAKA さん 01/04/04 13:00
 
TAKA です。

>>以下のようなデータを
>>A<abcde>124356<aabbcc>
>>
>>先頭の任意のデータを残したまま、
>>A124356<aabbcc>
>>このように置換したい場合のことですね。
>>私の勘違いでした。失礼しました。
>
>この場合は
> 検索文字列:^[^<]*<[^>]*>
>ですね。

置換をかけると、
A124356<aabbcc>
にはなりませんでした。
二回置換が動いているようで、最初に
124356<aabbcc>
に置換されて、次に
NULL(何もなし)
になっているようで、最終的に何もない状態になりました。

[ ]
RE:08243 範囲全体を置換No.08247
TAKA さん 01/04/04 13:43
 
TAKA です。

>replacedown "^[^<]+\\f<[^>]+>\\f.*$", "\\0\\2", regular, ask;

本来置換したいデータ
<abcde>124356<aabbcc>
が、置換されませんので、「+」を使わずに「*」を使えば、希望通
りになると思います。

[ ]
RE:08238 範囲全体を置換No.08248
TAKA さん 01/04/04 13:47
 
TAKA です。

>以下のようなデータを
>A<abcde>124356<aabbcc>
>
>先頭の任意のデータを残したまま、
>A124356<aabbcc>
>このように置換したい場合のことですね。
>私の勘違いでした。失礼しました。
>
>確かに、正規表現一発では、出来ないかも。

置換元に「^[^<]*\f<[^>]*>\f.*」、置換後に「\0\2」で、一発で
出来ました。

[ ]