Заметки группы Notepad ++ с использованием \ k - PullRequest
3 голосов
/ 20 сентября 2019

Как использовать регулярные выражения в Notepad ++, чтобы поместить все элементы, принадлежащие к набору, в одну строку?

У меня есть набор ответов на практические вопросы в следующем формате:

29  Continuous
29  Horizontal mattress
29  Interrupted
29  Vertical mattress
29  No use sutures because the immediate denture acts as a stint
30  1-5 years
30  6-10 years
30  11-15 years
30  16-20 years
30  21-25 years
31  Artery
32  Vitality of the tooth pulp
32  Age of the patient
32  Absence of root resorption

Я бы хотел, чтобы результат был отформатирован так, чтобы каждый набор был в одной строке:

29 Continuous Horizontal mattress Vertical mattress No use sutures because the immediate denture acts as a stint
30 1-5 years 6-10 years 11-15 years 16-20 years 21-25 years
31 Artery
32 Vitality of the tooth pulp Age of the patient Absence of root resorption

Я написал следующее регулярное выражение для выбора наборов:

^(?'number'^\d{0,4})\t(.*$)(\n\k<number>(.*))*

Подстановка с \1 \2 \4 дает

29 Continuous   No use sutures because the immediate denture acts as a stint
30 1-5 years    21-25 years
31 Artery 

Что я здесь не так делаю?

1 Ответ

1 голос
/ 21 сентября 2019

Я разработал решение на случай, если кто-нибудь попытается сделать что-то подобное.

Выберите наборы с помощью

(^(?'number'^\d{0,4})\t(.*$)(\n\k<number>(.*))*)

Разница между первоначально опубликованным кодом составляет () вокругвесь код

Замените на \1\n, чтобы создать наборы в следующем формате:

29  Continuous
29  Horizontal mattress
29  Interrupted
29  Vertical mattress
29  No use sutures because the immediate denture acts as a stint

30  1-5 years
30  6-10 years
30  11-15 years
30  16-20 years
30  21-25 years

31  Artery

32  Vitality of the tooth pulp
32  Age of the patient
32  Absence of root resorption

Выберите отдельные строки с помощью

(^(?'number'^\d{0,4})\t(.*$))\n

Замените на \3(два пробела после \ 3) для создания

Continuous  Horizontal mattress  Interrupted  Vertical mattress  No use sutures because the immediate denture acts as a stint   
1-5 years  6-10 years  11-15 years  16-20 years  21-25 years    
Artery  
Vitality of the tooth pulp  Age of the patient  Absence of root resorption

Я не знаю, как добавить вопрос # обратно с помощью регулярных выражений, но его можно легко импортировать в Excel, чтобы сделать это при необходимости.

...