Notepad++/同じ始まりで異なる終わりを持つ行を見つけるための正規表現

Notepad++/同じ始まりで異なる終わりを持つ行を見つけるための正規表現

そこで、少し調べてみたところ、NotePad++ では「通常の」正規表現が使用されていないことがわかりました (SciTE に戻ろうかと考え始めています)。しかし、私の質問は次のとおりです。

冗長なデータを含むエクスポートされたデータのリストがあり、それをクリーンアップして、アドレス帳にインポートするための適切な CSV に変換しようとしています (FAX サーバー ソリューションを移行しています。古いものは非常に古いため、エクスポートにはこれが最善の方法です)。

各エントリグループから削除しようとしている行は常に

エントリー: NAME ~

そして、各エントリ グループに固有の 12 桁の英数字 (16 進数のようです) コードが続きます。いくつかのエントリ グループでは、「NAME」の後に人間が判読できるエントリがありますが、これらは手動で削除できるほど少ないため、一致させるのはそれほど大変な作業ではありません。

そこで、Entry: で始まるすべての行を検索し、行の最後まで選択します。各グループの各エントリは別々の行にあります。次に、検索と置換を使用して、これらの行をリストから削除します。

更新: 入力と出力

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234

ここに 2 つのエントリ グループがあります。各グループから「Entry:」で始まる行を削除します。

答え1

もう一つの選択肢は

^Entry: NAME .*

Entry: NAMEこれは、で始まる行とそれ以降の行を検索します。

答え2

使用

^Entry: NAME ~\d+$

検索パターンは要求どおりに機能しているようです。

個人的には、より一般的なプレースホルダーではなく、プレースホルダー (から まで\dの範囲内の任意の 1 桁の数字に一致)を使用して一致させることをお勧めします。実際、次のようにする必要があります。09.

^Entry: NAME ~\d{12}$

期待していることを指定するその通り12 桁の数字が連続して表示されます。こうすることで、エントリに予期しない内容が含まれている場合でも、誤って置き換えてしまうことがなくなります。

文字列が 16 進表記になっている場合は、次のようにします。

^Entry: NAME ~[0-9a-fA-F]{12}$

最後の 2 つの例が Notepad++ で正しく動作するかどうかは確認していませんが、私の知る限り、これらはすべてかなり基本的な構文です。

関連情報