web-dev-qa-db-ja.com

2つの文字列の間にあるものを除くすべてのテキストを削除する方法(Notepad ++)

17kファイルからすべてのloginIDを切り捨てる必要があります。 2つの文字列の間にあるものを除いて、すべてのテキストを削除するにはどうすればよいですか?

例えば:

<USER_LOGIN_ID>user1</USER_LOGIN_ID>

<USER_LOGIN_ID>user2</USER_LOGIN_ID>

<USER_LOGIN_ID>user3</USER_LOGIN_ID>

<USER_LOGIN_ID>user4</USER_LOGIN_ID>

去るだろう

user1

user2

user3

user4

3
user2827773

これは少し複雑な正規表現です。

検索:<USER_LOGIN_ID>([^<]*)</USER_LOGIN_ID>置換:_$1_

ここでは、_<USER_LOGIN_ID>_、_<_以外の任意の数の文字、_</USER_LOGIN_ID>_が続きます。角かっこ_()_は中央のテキストをフィールドとしてマークし、置換文字列の_$1_はこの一致したフィールドにのみ展開されます。

1行に1つしか一致しない例では、少し単純な検索文字列<USER_LOGIN_ID>(.*)</USER_LOGIN_ID>を使用できますが、1行に2つのログインがある場合、これは失敗します。

1行に複数のログインがある場合、ソーステキストに句読点が介在しない限り、最初の検索で文字列が連結されます(そうでない場合は、置換文字列に追加する必要があります。例:_$1_-次のスペースで)。

もちろん、オプションで正規表現(およびおそらく大文字と小文字を区別する)をマークする必要があります。

1
AFH

検索する:

<USER_LOGIN_ID>(.*?)</USER_LOGIN_ID>

と置換する:

\1

表現 .*?は、指定された2つのタグの間にある最短のテキストを表します。 (疑問符は一致を貪欲にしません。)

0
Excellll