Блокнот ++ Знайдіть рядок 'a', видаліть рядок та наступні рядки, поки не буде знайдено рядок 'b'


0

Я редагую файл GEDCOM і видаляю 'погані' теги GEDCOM. Мій приклад: - Я хочу шукати "2 RIN", видалити цей рядок і всі наступні рядки, поки перші символи в наступному рядку не будуть "1" (1 + пробіл). Рядок з "1" не слід видаляти.

Приклад:

Існуючий файл

1 DEAT
2 TYPE D02 Death
2 DATE 1960
2 PLAC Perth
2 RIN 2
2 _PPT @@I1@@
3 TYPE 0 event owner
3 _NSQ 0
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

має бути результатом:

1 DEAT
2 TYPE D02 Death
2 DATE 1600
2 PLAC Perth
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

Відповіді:


1

регулярний вираз ^.*RIN.*\r\n(.*\r\n)*(?=^1.*)
або трохи краще
регулярний вираз^.*RIN.*\r\n(.*\r\n)*(?=^1 .*)

так що є ваш регкс. замініть це нічим. або з \ r \ n

Додано
пояснення. ^Зрівняйте початок рядка, а потім .*будь-які символи (хоча це не новий рядок, тому що ми поставили галочку, що крапка не відповідає новому рядку), а потім (.*\r\n)*порівнюйте всі рядки після ПІДТВЛЕННЯ цієї речі, яка не відповідає вам. (? = ^ 1. *) Отож, зверніть увагу лише на те, що одразу з’являється як наступний символ, але цього разу не відповідайте йому, і шукайте рядок, що починається з 1, а потім пробілу та будь-якого іншого. ЯКЩО дивлячись, ви виявите це, то відповідайте позиції.

Тож дивіться, що все, що визначає регулярний вираз, відповідає. Від тексту, ідентифікованого на початку регулярного виразів, до контуру регулярного вираження, який визначає позицію, яка відповідає, і знаходиться в кінці регулярного виразів.

введіть тут опис зображення

ОНОВЛЕННЯ

Невелика корекція до сказаного.

A) Ви запитали повторні рядки, що починаються з "2 RIN".
Б) Потрібна була негативна оцінка для одного з * s, щоб вона відповідала перед першим появою ^ 1.
C) Вам потрібно врахувати, чи має у файлі * nix або закінчення рядка Windows. Ви можете знайти в документі і шукати \ r \ n або \ n, і бачити, які збіги, щоб побачити, які закінчення рядка використовує файл. Це один спосіб. Ваш файл має * nix рядки, як показано в нижній правій частині вікна блокнота ++.

Отже, ви хочете цього регексу ^2 RIN.*\n(.*\n)*?(?=^1.*)

Ви хотіли б цього, якби це закінчення рядків Windows, що може статися, якщо ви копіюєте / вставляєте, тоді ви хочете, щоб цей регулярний вираз ^2 RIN.*\r\n(.*\r\n)*?(?=^1.*)

Але відкриваючи файл або копію файлу безпосередньо, ви впевнені, що ви хочете \ n версії, * nix версії, тобто ^2 RIN.*\n(.*\n)*?(?=^1.*) оскільки програмне забезпечення Windows, яке пише файл, записує його з закінченнями стилю * nix.


Дякую за відповідь, але я абсолютно новачок у Notepad ++, я не можу ніде знайти посібник для пояснення перемикачів тощо, тому я трохи загубився. Я "скопіював і вставив" вашу команду, але вона вибрала весь документ при використанні. Але дякую за вашу швидку відповідь, і я помічаю, що моє запитання було відредаговано - спасибі за це, набагато легше зрозуміти інших - але я не вводив так :-)
Девід Бенкс

Дякую за вашу відповідь, я є новачком у Notepad ++ і, здається, не можу ніде знайти посібник для пояснення параметрів та перемикачів у командному рядку, щоб розшифрувати, що відбувається. Я "скопіював і вставив" деталі, і він вибрав весь файл, включаючи частини до першого появи "1 RIN".
Девід Бенкс

@DavidBanks Чи включили ви ^на початку регулярного виразу. А ти знімав прапорець, у якому написано, що .відповідає новому рядку ? До речі, саме так виглядало ваше запитання перед моїм редагуванням i.imgur.com/sgk0Du6.png Отже, stackoverflow не відображає запитання під час їх введення, це заплутує форматування, тому я виправив форматування, щоб воно з’явилося як ви вводили його.
барлоп

1
@DavidBanks Ви шукаєте посібник. виразні вирази не характерні для блокнота ++. Я пропоную хорошу інтерактивну вікторину, яка допоможе їх вивчити. наприклад regexone.com і як керівництво / посилання regular-expressions.info
barlop

1
Так, я включив ^ і зняв галочку з поля «.matches new line». Я вставив командний рядок і навіть набрав його в себе, але він все ще вибирає весь документ у 85000 рядків. Перше виникнення "RIN" - це рядок 106, але він вибирає весь документ. Допомога! Дякую за переробку мого оригінального повідомлення, коли я побачив, що сталося, це зробило повну нісенітницю - у 21 столітті ми, здається, втратили WYSIWYG! Збереження форматування, безумовно, повинно бути фундаментальною особливістю. І я не усвідомлював, коли ви натискаєте "повернути", це "посилає" це повідомлення!
Девід Бенкс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.