замените пустое пространство запятыми в строках, которые могут содержать косую черту и тире - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь заменить пробел в строках текстом и косую черту с запятыми без запятой в конце строки.

Я использую текстовый редактор с отдельными строками поиска и замены.

вход выглядит следующим образом (несколько различных переменных):

CATEGORIES:ORION/AKC Collection accounts receivable White Plains 
CATEGORIES:ABITIBIBOWATER/NOA1 ENRON/NOA PAPERCO/CL DWA 
CATEGORIES:ONSITE FAO 
CATEGORIES:LAR-DAN Lar-Dan 

результаты должны быть:

CATEGORIES:ORION/AKC,Collection,accounts,receivable,White,Plains 
CATEGORIES:ABITIBIBOWATER/NOA1,ENRON/NOA,PAPERCO/CL,DWA 
CATEGORIES:ONSITE,FAO 
CATEGORIES:LAR-DAN,Lar-Dan 

Я пытался:

CATEGORIES:([A-Z|a-z])*

но мне достается только первое выражение

CATEGORIES:ORION (in the first example.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Регулярное выражение ваших проверенных CATEGORIES:([A-Z|a-z])* Соответствий CATEGORIES:, за которым следует группа захвата, повторяемая ноль или более раз с диапазонами a-z и A-Z, а также |, поскольку они находятся в классе символов .Это, например, также соответствует CATEGORIES:ONSITE||

, что вы можете сделать, это сопоставить CATEGORIES в группе захвата и использовать \G, чтобы получить итеративное совпадение, при котором вы не захватываете пробельные символы во второй группе захвата, а затемсовпадение один или несколько раз с пробелом, за которым не следует конец строки $.

(CATEGORIES:|\G(?!^))(\S+)[ ]+(?!$)

Regex demo

И замените двумя группами захвата, за которыми следует запятая

$1$2,

0 голосов
/ 01 октября 2018

Из вашего примера не похоже, что вы заменяете 1. пробелы в строках с текстом 2. косые черты с запятыми

В то время как ожидаемый вывод заменяет пробелы в строках на запятые

Этого можно добиться, выполнив поиск по шаблону ниже

(?<=\w)\s(?=\w)

, а затем просто замените его запятой.

Это будет искать только пробелы, окруженные символами, и игнорировать пробелы вза концом следует символ новой строки.

Вы можете сделать это в любом редакторе (пробовал в notepad ++ и vim)

Кроме того, если вы хотите получить 1. пробел в строках стекст 2. косая черта с запятыми

Затем для # 1 найдите (?<=\w)\s(?=\w) в вашем файле и замените его нужным текстом.

И для # 2 найдите \/в вашем файле и замените его на ,

...