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.