Notepad++ XML - Bedingtes Löschen von Tags basierend auf dem Inhalt untergeordneter Tags

Notepad++ XML - Bedingtes Löschen von Tags basierend auf dem Inhalt untergeordneter Tags

Ich bin ziemlich neu bei Notepad++ und versuche, mit Regex nach bestimmten Werten in einem Feld zu suchen und dessen übergeordnetes Tag (und den gesamten Inhalt einschließlich des Felds) zu löschen.

Im Wesentlichen versuche ich, Transaktionen zu entfernen, die bestimmte Store-IDs haben. Die Dateien sind riesig und es gibt Tausende von Einträgen, die ich löschen muss, Beispiel unten!

Probe

<Transaction>
                              <TxnHeader>
                                             <StoreId>6705</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>343243</TxnNumber>
                                             <StartDate>2019-02-02T07:42:45</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>4.470000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>8351</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>327527</TxnNumber>
                                             <StartDate>2019-02-02T08:02:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>7.310000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>7837</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>164728</TxnNumber>
                                             <StartDate>2019-02-02T08:19:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>1902</ItemNumber>
                                                            <DeptNumber>154</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>10.000000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>

Gewünscht

<Transaction>
                              <TxnHeader>
                                             <StoreId>6705</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>343243</TxnNumber>
                                             <StartDate>2019-02-02T07:42:45</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>4.470000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>7837</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>164728</TxnNumber>
                                             <StartDate>2019-02-02T08:19:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>1902</ItemNumber>
                                                            <DeptNumber>154</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>10.000000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>

Der gewünschte Text oben hat den Transaktionstag, der 8351 enthält, vollständig entfernt

Ich habe eine Regex-Suche und -Ersetzung (mit nichts) mithilfe der folgenden Abfrage versucht:

<Transaction>.*?<StoreID>8351</StoreID>.*?</Transaction>

und es endete damit, dass ein riesiger Teil des Dokuments vom Anfang bis zum Ende der ersten Transaktion mit 8351 umschlossen wurde.

Jede Hilfe wäre sehr willkommen!

Antwort1

  • Ctrl+H
  • Finde was:<Transaction>(?:(?!</Transaction>).)+<StoreId>8351</StoreId>(?:(?!<Transaction>).)+</Transaction>\R
  • Ersetzen mit:LEAVE EMPTY
  • check Groß-/Kleinschreibung beachten
  • check Umwickeln
  • check Regulärer Ausdruck
  • ÜBERPRÜFEN. matches newline
  • Replace all

Erläuterung:

<Transaction>               # opening tag
(?:(?!</Transaction>).)+    # tempered greedy token, make sure we haven't </Transaction> before the following
<StoreId>8351</StoreId>     # literally
(?:(?!<Transaction>).)+     # tempered greedy token, make sure we haven't <Transaction> before the following
</Transaction>              # literally, closing tag
\R?                         # optional any kind of linebreak

Bildschirmaufnahme:

Bildbeschreibung hier eingeben

Mehr überGemäßigtes Gier-Token

verwandte Informationen