1

объяснение

С помощью REGEX я пытаюсь преобразовать базу данных итальянских синонимов в следующий формат:

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

На данный момент у меня есть база данных необращенных синонимов в этом формате:

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

Уточнение: я хотел бы использовать регулярное выражение, чтобы соответствовать всем строкам, начинающимся с "|" (конвейер) и переместите их на строку выше, чтобы объединить со словом, совпадающим со строками, оканчивающимися на (Pipeline), а также перемещающимися в строки, начинающиеся с "|" (вторая-третья-четвертая строки синонимов, которые могут быть объединены вместе, очевидно, когда объединенные строки с "окончанием и началом" Конвейеров одного из (Конвейеров) должны быть удалены, чтобы получить желаемый формат:

Пример конвертированной базы данных из неконвертированной базы данных выше

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

Кто-нибудь может помочь мне найти точное РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ, используя функции НАЙТИ и ЗАМЕНИТЬ в любом текстовом редакторе?

2 ответа2

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

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

Или, если вы суетитесь по поводу лидирующих и конечных строк:

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
0

Если вы используете Windows, вы можете использовать расширенный режим поиска Notepad++, чтобы сделать это в 2 шага:

1: заменить |\r\n| с | - Это найдет все первые синонимы

первая замена

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

2: Заменить \r\n| с | - Это найдет все последующие синонимы

вторая замена

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .