Регулярное выражение Notepad ++: замените одну или несколько текстовых точек с запятой на тире, если точка с запятой является разделителем поля

Я немного борюсь.
Файл, которым мне нужно манипулировать, - это csv с точкой с запятой в качестве разделителя полей.
В некоторых наборах данных добавлен комментарий, содержащий точку с запятой. К счастью, эти комментарии начинаются и заканчиваются " .

пример:

;;;"sometext many words or few ; more text; even more text";;;;;;

мне нужно заменить все точки с запятой между ", но и сохранить текст.
Спасибо за помощь.

пример набора данных:

Before Regex find & Replace:  
Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text ; text text";text;text;text;text;text;text;text;text;text

After Regex find & Replace:  
Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text _ text text";text;text;text;text;text;text;text;text;text  
20
задан valiano
08.12.2022 6:49 Количество просмотров материала 2821
Распечатать страницу

2 ответа

  • Ctrl+H
  • найти: "[^";]*\K;(?=[^";]*")
  • заменить на: _
  • проверить обернуть вокруг
  • проверить регулярное выражение
  • заменить все

пояснение:

"           : a double quote
[^";]*      : 0 or more any character that is not a double quote or a semicolumn
\K          : forget all we have seen until this position
;           : a semicolumn
(?=         : start lookahead, make sure we have, after current position,
  [^";]*    : 0 or more any character that is not a double quote or a semicolumn
  "         : a double quote
)           : ed lookahead

замена:

_       : an underscore

результат для этого пример:

Fieldtitles: f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11  
Dataset1: ;;text;text;;text;text;text;text;text;text  
Dataset2: text;"text text text _ text text";text;text;text;text;text;text;text;text;text    
1
отвечен Toto 2022-12-09 14:37

в окне заменить, укажите следующее:

  • Найти: \"(.*?);(.*?)\"
  • заменить на: "_"
  • Регистрация Regular Expression пуля радио.

это заменить ; С _ в комментариях, содержащих один столбец с запятой. Разбивка регулярного выражения:

  • \" - начать поиск с двойных кавычек
  • (.*?); - все до первого полуколонны
  • (.*?)\" - матч все до следующего двойные кавычки
  • "_" - вывести соответствующие двойные кавычки и подобранные подвыражения #1 и #2, заменив ; С _.

если в комментарии может быть несколько точек с запятой, просто продолжайте нажимать Replace AllWrap around опция включена) - заменяет одну точку с запятой на комментарий, пока не будут заменены все точки с запятой.

0
отвечен valiano 2022-12-09 16:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх