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
これは少し複雑な正規表現です。
検索:<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
_-次のスペースで)。
もちろん、オプションで正規表現(およびおそらく大文字と小文字を区別する)をマークする必要があります。
検索する:
<USER_LOGIN_ID>(.*?)</USER_LOGIN_ID>
と置換する:
\1
表現 .*?
は、指定された2つのタグの間にある最短のテキストを表します。 (疑問符は一致を貪欲にしません。)