Basit REGEX - “|” - [Pipeline] ile başlayan tüm satırların, yukarıdaki [Pipeline] ile biten satıra nasıl getirileceği


1

açıklama

REGEX'in yardımıyla italyan eşanlamlı veritabanını aşağıdaki biçime dönüştürmeye çalışıyorum:

synonym1|synonym2|synonym3
anothersynonym1|anothersynonym2
...........
......

Şu anda bu formatta dönüştürülmemiş eşanlamlılar veritabanına sahibim:

a|       - word
|per     -it's synonym
|verso   -another synonym of the word "a" in the second row
abate|    - second word
|priore|superiore
abbacchiare|
|avvilire|deprimere
abbacchiarsi|
|abbattersi|abbiosciarsi|accasciarsi

Açıklama: "|" İle başlayan tüm satırları eşleştirmek için Normal İfade kullanmak istiyorum (pipeline) ve (Pipeline) ile biten satırlarla eşleşen ve "|" ile başlayan satırlarda hareket eden kelime ile birleştirmek için bunları yukarıdaki satıra taşıyın (ikinci - üçüncü - dördüncü eşanlamlı çizgiler birlikte birleştirilebilir, açık bir şekilde "biten ve başlayan" çizgilerle birleştirildiğinde, (Boru Hatlarından) boru hatlarından birinin istenen formatı alabilmesi için kaldırılması gerekir:

Yukarıda dönüştürülmemiş veritabanından dönüştürülmüş veritabanı örneği

a|per|verso
abate|priore|superiore
abbachiare|avvilire|deprimere
abbachiarsi|abbattersi|abbiosciarsi|accasciarsi

Herhangi biri bir metin editöründe FIND ve REPLACE işlevini kullanarak REGULAR ANLATIMI bulmakta bana yardımcı olabilir mi?

Yanıtlar:


0

Windows kullanıyorsanız, Genişletilmiş Arama Modunu kullanabilirsiniz. Notepad ++ 2 adımda bunu yapmak için:

1: Değiştir |\r\n| ile | - Bu ilk eş anlamlıların tümünü bulacak

first replace

a|per
|verso
abate|priore|superiore
abbacchiare|avvilire|deprimere
abbacchiarsi|abbattersi|abbiosciarsi|accasciarsi

2: Değiştir \r\n| ile | - Bu sonraki tüm eşleşmeleri bulacak

second replace

a|per|verso
abate|priore|superiore
abbacchiare|avvilire|deprimere
abbacchiarsi|abbattersi|abbiosciarsi|accasciarsi

Ekran görüntülerinde bile çok, çok, çok açıklayıcı teşekkür ederim, çözümünüz tam olarak yazdığınız şekilde çalıştı !!!
Daniel Foltynek

0
perl -ne 'chomp; print /^(.*)\|\s*$/?"\n$1":$_' filename

a|per|verso
abate|priore|superiore
abbacchiare|avvilire|deprimere
abbacchiarsi|abbattersi|abbiosciarsi|accasciarsi

Veya, önde gelen ve takip eden yeni hatlara meraklıysanız:

perl -ne 'chomp; print /^(.*)\|\s*$/?$.==1?$1:"\n$1":$_;END{print"\n"}' filename
a|per|verso
abate|priore|superiore
abbacchiare|avvilire|deprimere
abbacchiarsi|abbattersi|abbiosciarsi|accasciarsi
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.