Tüm düzenli ifade eşleşmelerini Textpad veya Notepad ++ 'da liste halinde dışa aktarın


28

Textpad veya Notepad ++ 'da, normal ifade bulgusu için tüm eşleşmeleri tek bir liste halinde dışa aktarma seçeneği var mı?

Büyük bir metin dosyasında, normal ifadeyi kullanarak etiketler (%% içine alınmış kelimeler) arıyorum %\< and \>%ve tüm eşleşmeleri tek bir liste halinde istiyorum, böylece Excel'i kullanarak çiftleri kaldırabilir ve benzersiz etiketlerin bir listesini alabilirim.


Not Defteri ++ için RegexExtract eklentisini kullanırsanız, kopyaları sizin için kaldırabilir ve Excel ile işlem sonrası işleme gerek yoktur.
R. Schreurs,

Yanıtlar:


53

Bunu, Notepad ++ uygulamasında Geri Referanslar ve Bul ve İşaretle işlevini kullanarak gerçekleştirebilirsiniz .

  1. Regex kullanarak eşleşenleri bulun (sayın %(.*?)%) ve değiştirin \n%\1%\n, bundan sonra hedef kelimemizi ayrı satırlar halinde tutacağız (yani hiçbir satırda birden fazla eşleşen kelime olmaz)

  2. Her satırı regex ile işaretlemek için Ara -> Bul -> İşaretle işlevini kullanın ve metni işaretlemeden önce %(.*?)%' Yer İşareti ' seçeneğini işaretlemeyi unutmayın

  3. Ara -> Yer İşareti -> İşaretlenmemiş Çizgileri Kaldır'ı seçin.
  4. Kalan metni kaydedin. Gerekli liste.

%> Yerine etiket olarak <> ile bir dosya daha var, <(. *?)> Ve \ n <\ 1> \ n ile denedim, ancak çalışmıyor, lütfen yardım edin.
Kiranshell 21:12

Bir şey değil :) Benim için de <> için çalışıyor. Yuvalanmış <> var mı? Neyin işe yaramadığını tam olarak açıklayabilir misiniz?
Ankit

Daha önce olduğu gibi etiketlerin bir listesini yapmaya çalışıyorum ama bunlar bir kez <>,% (. *?)% Yerine <(. *?)> Kullanıyorum ve \ n yerine \ n <\ 1> \ n kullanıyorum % \% 1 \ n, bu örnek bir dosya link wikisend.com/download/158050/tags.txt
Kiranshell

Sağlanan metinle tekrar denedim ve normal çalışmasını <(. *?)> Kullanarak. Ben <Malzemeleri> <hostname> ..... vb etiketlerin listesi var
Ankit

Lütfen yaşadığınız tam hatayı / problemi belirtiniz. Aptalca bir ses olabilir, ancak imleci en üste taşımayı unutma. Sık sık bu hatayı yapıyor ve arama sonuç vermiyor ... :)
Ankit

5

Bu yapıyor yılında Notepad ++ zorunlu gereksinimi? Windows'da mısın, yoksa bir tür Unix mi? Windows kullanıyorsanız, bunu Komut İsteminden (kısmen) yapabilirsiniz:

findstr / r "% [az]. * [az] %% [az]%" your_file > new_file

findstrbelirsiz bir şekilde ilham alıyor grep, bu nedenle bu new_file arama kriterlerinize uyan tüm satırları içerecek ; İstenmeyen metni çıkarmak için Notepad ++ tuşunu kullanabilirsiniz (ilk% 'nin soluna ve ikinci öğenin sağına).


Ve tabii ki, eğer Unix'seniz, eşdeğer görevi de yapabilirsiniz sed.


uzaklardan en iyi cevap!
Charles-Antoine Fournel

2

Eşleşen regex ifadesini yeni sekmedeki yeni dosyaya kopyalayabilen bir Notepad ++ eklentisi var. REGEXEXTRACT

Geçerli belgeden bir metni veya bazı ek ayarlara sahip bir konumdaki tüm dosyaları (vaka dönüştürme gibi) çıkarabilecek herhangi bir eklenti bulamadığım için, bunu kendim yapmaya karar verdim. (...) Eklenti arayüzü oldukça basittir (...). (...) "Bul", "Değiştir" ve "Maske" alanları, C ++ 11 regex sözdizimini kullanır. Dosyalardan ayıklamak şu anda sadece UTF8’de olanlar için çalışıyor.

Soruya göre düzenlenmiş Dialog girişini düzenle

görüntü tanımını buraya girin

Resimde diyalog penceresinin nasıl doldurulacağını görebilirsiniz. Bir kelimenin boşluk, vb içermediğini, yalnızca \ w ile eşleşen karakterlerin olduğunu varsayalım. Özellikle:

  • Algılama karakterleri olmadan kelimenin seçilmesine izin vermek için bir parantez kullanın.
  • İlk eşleşmeyi seçmek için Yenisiyle değiştir seçeneğini seçin. Aksi takdirde, tüm $ 1, 2 $, vb.
  • Kontrol ... Atla $ & tam eşleşmeleri bırakmak.
  • Her bir eşleşmeyi yalnızca bir kez bildirmek için Benzersiz filtresini kontrol edin .
  • Sonuçları almak için Ayıkla'yı tıklatın . ( Arama yalnızca eşleşmeleri bulur, ancak rapor etmez).

Güzel bir eklenti, tam olarak ne isteniyorsa onu yapar.
R. Schreurs,

64-bit Notepad ++ ile çalışmıyor gibi görünüyor
Ivan Chau

0

TextPad'de, Findkutuyu her zamanki gibi açarsınız, sonra Mark Alldüğmeyi kullanın .

Oradan Copy Bookmarked Linesişlevi kullanın . (Düzen menüsü> Diğer Kopyala> İşaretli Çizgiler.)


Şahsen, bu işlemi çok sık yapıyorum, Yer İşaretlerini Kopyala işlevi için bir klavye kısayolu yapılandırdım: Ctrl + Alt + c.
daveloyall

Bu soruya geldim çünkü Notepad ++ sorusunu araştırıyordum. Sadık ve ödemesiz bir Textpad kullanıcısı olarak yıllar sonra Notepad ++ (GPL) 'ya geçiyorum.
daveloyall
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.