Bu metnin tümünü bulmak ve değiştirmek için Not Defteri ++ 'da joker karakterleri nasıl kullanırım?


2

Bu konuda biraz yardım için minnettar olurum. XML komut dosyası ile işaretlenmiş büyük bir metin cesedi ile çalışıyorum ve bazı şeyleri düzeltmem gerekiyor. Daha spesifik olarak, silmem gereken (parantezler dahil) köşeli parantez içerisinde birkaç tane sayı var (yani, [[1234] gibi). Her numara farklıdır ve bu numaralarda 3 ile 5 rakam arasında bir şey olabilir.

Yapmam gereken ikinci şey, XML etiketlerini diğer bazı metin parçalarının etrafına yerleştirmek. Bunlar yuvarlak parantez içindeki isimlerdir. Yani, gibi:

O (Bay Smith) dedi ki ...

Hangisini değiştirmek istiyorum:

Dedi <annot> (Mr. Smith) </annot>ki ... '.

Bu değişikliklerin ikisini de nasıl yapabilirim?

Genişletilmiş Modu kullanmayı ve '[. *]' Aramayı çoktan denedim, ancak sonuç alınmadı. RegEx ile aynı şeyi denediğimde çok fazla hit alıyorum, ancak corpus'taki her köşeli parantez için arama yapıyor gibi görünüyor.

Yanıtlar:


1

Köşeli parantez normal ifadelerde özel belirteç (olan [a-z]aralıktaki her karakteri anlamına aetmek z), bu yüzden onları kaçmak olurdu.

Arama ifadeniz \[\d+\]( \d+bir veya daha fazla rakam olan) olur. Ancak bunu sadece rakamlarla değiştirmek istiyorsunuz. Parantez kullanarak bir yakalama grubu kurmanız ve bunu yerine ifade ifadesine başvurmanız gerekir. Ayarlarınız şöyle olur:

  • Aramak: \[(\d+)\]
  • İle değiştirin: \1

İkinci sorununa gelince, ben sadece isimleri parantez arasına ise düzgün vermek bağlamıyla ..., sadece yerini alabilir anladığımdan emin değilim \([^\)]+\)ile <annot> \0 </annot>, ya da belki \(Mr\. [^\)]+\)isimler öncesinde eğer Mr..

Detaylara ulaşmak için, çalışma şekli şu şekildedir:

  • normalde yakalama gruplarını tanımlamak için kullanılır gibi kullandığınız böylece aramak parantez (kaçmış lazım \(ve\)
  • [^...]+ olmayan bir veya daha fazla karakter ...
  • Bu nedenle, arama ifadeniz bir açılış parantezidir, bunu bir kapanış parantezi olmayan karakterler izler (bu nedenle isimlerle eşleşmelidir), ardından bir kapanış parantezi kullanılır.
  • \0 değiştirme alanındaki tüm aranan ifadeyi temsil eder

Değiştirilecek bu isimlerden oluşan bir listeniz varsa \(whatever name\), arama ifadesi olarak kullanmanız daha iyi olur ve kullanmazsanız , o zaman imkansızdır, çünkü regexp "tahmin" yapamazsınız. .


2
Ayrıca, düzenli bir şekilde regex kullanarak arama yapmanız gerekir. Genişletilmiş mod sadece sekmeler için \ t, yeni satırlar vb. İçin \ t yapar
LPChip
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.