Notepad ++文字列「a」を検索し、文字列「b」が見つかるまで行と後続の行を削除します


0

GEDCOMファイルを編集し、「悪い」GEDCOMタグを削除しています。私の例は次のとおりです。-「2 RIN」を検索し、次の行の最初の文字が「1」(1 +スペース)になるまでその行と後続のすべての行を削除します。「1」の行は削除しないでください。

例:

既存のファイル

1 DEAT
2 TYPE D02 Death
2 DATE 1960
2 PLAC Perth
2 RIN 2
2 _PPT @@I1@@
3 TYPE 0 event owner
3 _NSQ 0
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

次のようになります:

1 DEAT
2 TYPE D02 Death
2 DATE 1600
2 PLAC Perth
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

回答:


1

正規表現^.*RIN.*\r\n(.*\r\n)*(?=^1.*)
または少し優れた
正規表現^.*RIN.*\r\n(.*\r\n)*(?=^1 .*)

あなたの正規表現があります。それを何も置き換えません。または\ r \ n


説明を追加しました。^行の先頭に一致してから.*、すべての文字(新しい行ではありませんが、ドットが新しい行ボックスに一致しないことを確認しました)で、 (.*\r\n)*一致しないこのことをUN​​TILした後のすべての行に一致します。(?= ^ 1。*)したがって、次の文字としてすぐに現れるものを先読みしますが、今回は一致せず、1で始まり、次にスペース、そして何でも行を探します。探しているときにそれを見つけたら、位置を合わせます。

したがって、正規表現が識別するすべてが一致することを確認してください。正規表現の先頭で識別されたテキストから、一致する位置を識別し、正規表現の末尾にある正規表現の先読みまで。

ここに画像の説明を入力してください

更新

上記のわずかな修正。

A)「2 RIN」で始まるre行を尋ねました。
B)^ 1が最初に現れる前に一致するように、*の1つに対して欲張りでない評価が必要でした。
C)ファイルに* nixまたはWindowsの行末があるかどうかを考慮する必要があります。文書内で検索を行い、\ r \ nまたは\ nを探し、一致するものを確認して、ファイルが使用する行末を確認できます。それが一つの方法です。ファイルには、notepad ++ウィンドウの右下に表示される* nix行の末尾があります。

あなたはこの正規表現が欲しい ^2 RIN.*\n(.*\n)*?(?=^1.*)

コピー/貼り付けを行う場合に発生する可能性のあるWindowsの行末である場合、この正規表現が必要になります。 ^2 RIN.*\r\n(.*\r\n)*?(?=^1.*)

しかし、ファイルまたはファイルのコピーを直接開くには、確かに、\ nバージョン、つまり* nixバージョンが必要です。つまり^2 RIN.*\n(.*\n)*?(?=^1.*) 、Windowsソフトウェアはファイルを書き込むため、* nixスタイルの行末で書き込みます。


答えてくれてありがとう、しかし私はNotepad ++の初心者です。スイッチなどを説明するマニュアルがどこにも見つからないので、少し迷っています。コマンドを「コピーして貼り付け」ますが、使用するとドキュメント全体が選択されます。しかし、あなたの迅速な答えに感謝し、私の質問が編集されたことに気づきました-そのおかげで、他の人が理解するのは非常にエザイアです-しかし、私はそのようにtを入力しませんでした:
David Banks

答えてくれてありがとう、Notepad ++の初心者です。何が起こっているのかを解読するためのコマンドラインのパラメーターとスイッチについて説明するマニュアルはどこにもありません。詳細を「コピーして貼り付け」、最初の「1 RIN」が発生する前の部分を含むファイル全体を選択しました。
デビッドバンクス

@DavidBanks ^正規表現の先頭にを含めましたか。そして、.改行に一致するというボックスを外しましたか?ところで、これは私の編集前のあなたの質問のようですi.imgur.com/sgk0Du6.png したがって、stackoverflowは入力された質問を表示せず、書式設定を台無しにします。入力したとおり。
-barlop

1
@DavidBanksは、マニュアルを探しています。egular式はnotepad ++に固有のものではありません。それらを学習するのに役立つインタラクティブなクイズをお勧めします。例:regexone.com およびmanual / reference regular-expressions.info
barlop

1
はい、^を含め、「。matches new line」ボックスのチェックを外しました。コマンドラインを貼り付けて自分で入力しましたが、それでも85,000行のドキュメント全体が選択されています。「RIN」の最初の出現は106行目ですが、ドキュメント全体を選択しています。元のメッセージを再入力してくれてありがとう、何が起こったのかを見たとき、それは完全に無意味になりました-21世紀にはWYSIWYGを失ったようです!確実にフォーマットを保存することは基本的な機能です。そして、あなたが「戻る」を押すと、それがこのメッセージを「送る」ことに気づきませんでした!
デビッドバンクス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.