Notepad ++ uygulamasında ^ ve ~ arasındaki metni bulma ve değiştirme


22

Ben ^ sembolü ve ~ sembolü arasındaki tüm metni kaldırmak istediğiniz büyük bir metin dosyası var. Bunun hatlar arasında da çalışması gerekiyor.

^*~Bul kutusunda kullanarak düzenli bir Bul ve Değiştir yapmayı denedim ve Değiştir kutusunda hiçbir şey yapmadım ama 0 sonuç buldu.

Yanıtlar:


24

Bu, normal bir Bul ve Değiştir ile mümkün değildir . Notepad ++ 6 kullanıyorsanız, PCRE'yi ( kaynak ) destekleyen yeni regex motorundan yararlanabilirsiniz .

Bul ve Değiştir iletişim kutusunu açmak için Ctrl+ tuşuna basın ve aşağıdaki eylemi gerçekleştirin:H

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

Şimdi tüm tekrarlamaları değiştirmek için Alt+ tuşuna basın A.

Aşağıdakileri içeren Bul ifadesindeki normal ifade :

  • \^değişmez bir ^ .
  • .*? normal ifadenin eşleşmesini sağlayan en az karakterdir.
  • ~değişmez bir ~ .

3
. *? ~ değerini [^ ~] * ~ olarak değiştirirseniz, PCRE'ye gerek duymadan / kullanmadan çalışmalıdır.
barlop

1
@barlop: Normal Bul ve Değiştir'i Arama Modu olarak aldım : Normal , Normal ifadeleri kullanarak Bul ve Değiştir değil . Bu bir yanlış anlama olabilir. Her durumda, doğru hatırlıyorsam, 6'dan önceki sürümler çok satırlı kalıpları desteklemiyordu.
Dennis

.*?Benim için çalıştı desen ait karakterler arasında arama yapma ;ve <. Böylece arama ve;.*?<;Regular expression. matches new line
SherlockSpreadsheets

8

Aramak \^.*?~ve emin olmak isteyeceksiniz . yeni satır eşleşmesi etkinleştirildi:

resim açıklamasını buraya girin

Bunun nedeni ^, özel bir anlamı olması, bir çizginin başlangıcıyla eşleşmesidir. Bu nedenle, ters eğik çizgi ile kaçmamız gerekiyor \^.

Yazma ^*, "arka arkaya herhangi bir sayıda satır başı" ile eşleşir. .*"herhangi bir karakter" ile eşleşir, ancak varsayılan olarak yeni satırlarla eşleşmez.


2
Normal ifadenin açgözlü davranışlarına dikkat edin. Birden fazla ~karakter (veya yani birden fazla eşleşme) varsa, bu ilk karakterden ^sonuncuya kadar eşleşir ~.
heavyd

@heavyd <question> Emin misiniz? </question>. O kullandı *?o tembel açgözlü olmadığını .*?~birden fazla maç asla ~. O zaman tamam.
barlop

@barlop: Ben cevapladıktan kısa bir süre sonra yorum yaptı. Bir ninja düzenlemesiydi.
Der Hochstapler

2

\^[^~]*~ ^ İle ~ arasındaki her şeyi değiştirmek için bulma bölümünde bu normal ifadeyi kullanmayı deneyin .


ve münhasıran, o zaman PCRE gerektiren varsayalım, o zaman bir şey yapmak (? <= ^) [^ ~] * (? = ~) Ben test etmek için n ++ yoktur, ancak başarısız denemek başarısız (? <= ^ ) - (? <= \ ^)
barlop

Yalnızca, ile değiştirin ^~.
Dennis

@Dennis Yani ^ ve ~ arasındaki her şeyi değiştirmek istiyor ancak ^ ve ~
barlop

1
Eğer değiştirirseniz ne elde değil mi \^[^~]*~sahip ^~?
Dennis

@Dennis oh Ne demek istediğini anlıyorum, iyi bir nokta.
barlop

0

Başlangıç ​​ve bitiş karakterleriyle benzer bir BETWEEN değiştirme gereksinimim vardı. Bu, görünüm e-postasından geldi; üyelerin <hundereds ve ben sadece Kaldır RemoveTextHere arasında her şeyi kaldırılmış kişi isimleri istedim >.

orijinal

First1 Last1 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

Dennis çözümüme yakındı Find what: \^.*?~ama gerçek karakterlerimi değiştirmek zorunda kaldım, Find what: \<.*?>sonra ilk eğik çizgiyi kaldırmak zorunda kaldım Find what: <.*?>.

Güncellenmiş Find what: <.*?> ; Boş değiştirin.

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

Özel Karakterler : *, $, \, +, ^, (ve ), [, ], {ve}

Özel Karakterler /programming/37742519/notepad-wildcard adresinde Jerry Jeremiah tarafından açıklanmıştır .


Bu soruya cevap vermiyor.
Toto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.