Notepad ++ regex tidak berfungsi


2

Saya mencoba menggunakan Notepad ++ dan ekspresi reguler untuk menghapus semua XML dari acara Windows.

Ekspresi reguler saya adalah sebagai berikut:

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

Contoh acara Windows adalah sebagai berikut:

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>

Ekspresi reguler yang disebutkan di atas berfungsi di http://www.regexpal.com/ : masukkan deskripsi gambar di sini

Ekspresi reguler yang disebutkan di atas tidak berfungsi di Notepad ++: masukkan deskripsi gambar di sini

Jawaban:


2

Apa ekspresi reguler untuk menghapus semua XML?

  • Menu "Cari"> "Ganti" (atau Ctrl+ H)

  • Setel "Temukan apa" Event Xml:(.*?)Event>

  • Setel "Ganti dengan" ke string kosong

  • Aktifkan "Ekspresi reguler"

  • Aktifkan ". Cocok dengan baris baru"

  • Klik "Ganti Semua"

    masukkan deskripsi gambar di sini

Sebelum :

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>

Setelah :

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.

Bacaan lebih lanjut


Bagus, terima kasih. Adakah gagasan mengapa punyaku tidak berhasil?
mythofechelon

Mungkin karena karakter <eol> Anda. Windows \r\n, Unix \n, Mac lama \r. Ini bisa jadi menyebalkan.
DavidPostill

@ Syslordis Setelah beberapa pengujian, tampaknya Anda berdua benar. Dengan opsi ". Cocok dengan baris baru" dinonaktifkan, regex Event Xml:(.|\r\n)+?Event>melakukan hal yang sama dengan regex Event Xml:(.*?)Event>dan regex Event Xml:(.|\r\n)+?Event>\r\nhanya mengganti instance pertama karena kurangnya akhir baris file yang sudah ada sebelumnya. Adakah ide bagaimana juga menghapus baris baru?
mythofechelon

Apa pun itu, ini adalah proses dua langkah. Tambahkan <return> di akhir baris terakhir dan gunakan Event Xml:(.*?)Event>[\r\n]+ atau gunakan Event Xml:(.*?)Event>lalu ganti [\r\n]+dengan \r\n.
DavidPostill

@ mythofechelon Hebat. Jika salah satu jawaban membantu Anda, harap ingat untuk menerimanya;)
DavidPostill

1

Ekspresi reguler \r\nEvent Xml:(.|\r\n)+?Event>berfungsi persis seperti yang diinginkan dalam menghapus semua instance tanpa menghiraukan baris akhir file dan tanpa mengaktifkan opsi ". Cocok dengan baris baru".

Sebelum: masukkan deskripsi gambar di sini

Setelah: masukkan deskripsi gambar di sini

Terima kasih kepada @DavidPostill dan @Sylordis dalam membantu saya mengetahui hal ini!


0

Anda harus mencentang opsi ". Cocok dengan baris baru" di notepad ++, jika tidak, ekspresi reguler hanya dianggap sebagai baris per baris.


Melakukan pencarian dan penggantian menggunakan regex di atas dan opsi itu menghasilkan SEMUA teks yang diganti.
mythofechelon

Saya tidak dapat mengomentari posting David jadi saya akan melakukannya di sini: ekspresi Anda tidak berfungsi karena Anda mencari baris lain di akhir ekspresi Anda, tetapi akhir file Anda tidak memiliki baris baru .
Sylordis

@ Syslordis Tentunya itu seharusnya menemukan contoh pertama setidaknya?
mythofechelon

Ketika saya mencobanya sebenarnya ... Berhati-hatilah di mana kursor Anda di sini ketika Anda mencari dan menonaktifkan pencarian bungkus jika tidak memilih seluruh file.
Sylordis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.