Wyrażenie regularne Notepad ++ nie działa

1

Próbuję użyć Notepad ++ i wyrażeń regularnych, aby usunąć cały XML ze zdarzeń Windows.

Moje regularne wyrażenie jest następujące:

Event Xml:(.|\n)+?Event>\n

Przykładowe zdarzenia systemu Windows są następujące:

Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the stopped state.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="16384">7036</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2016-04-29T10:54:00.113587400Z" />
    <EventRecordID>299771</EventRecordID>
    <Correlation />
    <Execution ProcessID="696" ThreadID="3904" />
    <Channel>System</Channel>
    <Computer>hostname.domainname</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Adobe Flash Player Update Service</Data>
    <Data Name="param2">stopped</Data>
    <Binary>410064006F006200650046006C0061007300680050006C0061007900650072005500700064006100740065005300760063002F0031000000</Binary>
  </EventData>
</Event>

Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the running state.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="16384">7036</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2016-04-29T10:54:00.113587400Z" />
    <EventRecordID>299770</EventRecordID>
    <Correlation />
    <Execution ProcessID="696" ThreadID="3904" />
    <Channel>System</Channel>
    <Computer>hostname.domainname</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Adobe Flash Player Update Service</Data>
    <Data Name="param2">running</Data>
    <Binary>410064006F006200650046006C0061007300680050006C0061007900650072005500700064006100740065005300760063002F0034000000</Binary>
  </EventData>
</Event>

Wyżej wymienione wyrażenie regularne działa w http://www.regexpal.com/ : enter image description here

Wspomniane wyrażenie regularne nie działa w Notepad ++: enter image description here

mythofechelon
źródło

Odpowiedzi:

1

Jakie są wyrażenia regularne, aby usunąć cały XML?

  • Menu „Szukaj” & gt; „Zastąp” (lub Ctrl + H )

  • Ustaw „Znajdź co” Event Xml:(.*?)Event>

  • Ustaw „Zamień na” na pusty ciąg

  • Włącz „Wyrażenie regularne”

  • Włącz „. Pasuje do nowej linii”

  • Kliknij „Zamień wszystko”

    enter image description here

Przed :

Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the stopped state.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="16384">7036</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2016-04-29T10:54:00.113587400Z" />
    <EventRecordID>299771</EventRecordID>
    <Correlation />
    <Execution ProcessID="696" ThreadID="3904" />
    <Channel>System</Channel>
    <Computer>hostname.domainname</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Adobe Flash Player Update Service</Data>
    <Data Name="param2">stopped</Data>
    <Binary>410064006F006200650046006C0061007300680050006C0061007900650072005500700064006100740065005300760063002F0031000000</Binary>
  </EventData>
</Event>

Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the running state.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="16384">7036</EventID>
    <Version>0</Version>
    <Level>4</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2016-04-29T10:54:00.113587400Z" />
    <EventRecordID>299770</EventRecordID>
    <Correlation />
    <Execution ProcessID="696" ThreadID="3904" />
    <Channel>System</Channel>
    <Computer>hostname.domainname</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Adobe Flash Player Update Service</Data>
    <Data Name="param2">running</Data>
    <Binary>410064006F006200650046006C0061007300680050006C0061007900650072005500700064006100740065005300760063002F0034000000</Binary>
  </EventData>
</Event>

Po :

Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the stopped state.


Log Name:      System
Source:        Service Control Manager
Date:          2016/04/29 11:54:00
Event ID:      7036
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      hostname.domainname
Description:
The Adobe Flash Player Update Service service entered the running state.

Dalsza lektura

DavidPostill
źródło
To wspaniale, dziękuję. Jakiś pomysł, dlaczego mój nie działa?
mythofechelon
Prawdopodobnie z powodu twojego & lt; eol & gt; postacie. Windows jest \r\n, Unix jest \n, stary Mac jest \r. To może być ból.
DavidPostill
@Syslordis Po kilku testach wydaje się, że oboje mieliście rację. Z opcją „. Pasuje do nowej linii” wyłączona, wyrażenie regularne Event Xml:(.|\r\n)+?Event> wykonywane tak samo jak wyrażenie regularne Event Xml:(.*?)Event> i regex Event Xml:(.|\r\n)+?Event>\r\n zastąpił tylko pierwszą instancję z powodu braku istniejącego końca nowej linii pliku. Jakieś pomysły, jak również usunąć dodatkowe znaki nowej linii?
mythofechelon
Tak czy inaczej jest to proces dwuetapowy. Dodaj & lt; return & gt; na końcu ostatniej linii i użyj Event Xml:(.*?)Event>[\r\n]+ lub posługiwać się Event Xml:(.*?)Event> a następnie zastąp [\r\n]+ z \r\n.
DavidPostill
@mythofechelon Great. Jeśli jedna z odpowiedzi ci pomogła, pamiętaj, aby ją zaakceptować;)
DavidPostill
0

Musisz zaznaczyć opcję ". Pasuje do nowej linii" w Notatniku ++, w przeciwnym razie wyrażenie regularne powinno być traktowane jako linia po linii.

Sylordis
źródło
Wykonanie wyszukiwania i zastąpienia za pomocą powyższego wyrażenia regularnego i opcja powoduje zastąpienie WSZYSTKIEGO tekstu.
mythofechelon
Nie mogę komentować posta Davida, więc zrobię to tutaj: twoje wyrażenie nie zadziałało, ponieważ szukałeś innej linii na końcu wyrażenia, ale koniec twojego pliku nie ma nowej linii .
Sylordis
@Syslordis Z pewnością powinien był znaleźć pierwsze wystąpienie przynajmniej?
mythofechelon
Kiedy próbowałem, to faktycznie ... Po prostu uważaj, gdzie znajduje się kursor podczas wyszukiwania i dezaktywowania wyszukiwania zawijania, w przeciwnym razie zaznaczył cały plik.
Sylordis
0

Wyrażenie regularne \r\nEvent Xml:(.|\r\n)+?Event> działało dokładnie tak, jak było to pożądane w usuwaniu wszystkich instancji bez względu na końcową linię końca wiersza i bez włączania opcji.. pasuje do nowej linii.

Przed: enter image description here

Po: enter image description here

Podziękowania dla @DavidPostill i @Sylordis za pomoc w wymyśleniu tego!

mythofechelon
źródło