Заменить первую запятую только на $ в строках - PullRequest
0 голосов
/ 18 февраля 2020

Используя Notepad ++, у меня есть набор данных с разделителями табуляции, в котором я хочу заменить $ только на первую запятую в первом поле, оставив остальную часть строки нетронутой. Я планирую использовать этот новый набор данных, чтобы разбить первое поле на два поля с помощью Excel. Мой элементарный гр asp в Regex не оставляет мне знания, чтобы выполнить это. Как эта формула будет пересмотрена для обработки дополнительных запятых в первом поле? Любая помощь будет оценена.

Исходная строка:

Parent, Jessica, 1816-1891--->LIS-BMD-006-06--->D--->102--->Laura Bush's Scrapbook

Пересмотренная строка:

Parent$ Jessica, 1816-1891--->LIS-BMD-006-06--->D--->102--->Laura Bush's Scrapbook              

=== После применения исходного выражения я обнаружил, что несколько строк уникален тем, что они не содержат запятую, разделяющую Last_Name и First_Names [OR], еще чаще, точку, разделяющую Last_Name и First_Names. Хотя это число составляет всего около 1% по сравнению с файлом из 1,5 миллионов строк, это представляет собой значительный объем поиска.

Обычный шаблон:

Пейн, Иеремия ---> (выражение работает правильно создать Payne $ Jeremiah --->)

Необычные шаблоны:

(1) Payne Jeremiah ---> (выражение передается в строке, создавая ситуацию, в которой данные из поля три возвращается в поле два)

(2) Пейн. Иеремия ---> (выражение передается по строке, создавая ситуацию, в которой данные из поля три перемещаются обратно в поле два)

(3) Пейн, Иеремия, Джозеф ---> (выражение правильно заменяет первое запятая, но может создать проблему, основанную на второй запятой)

Кажется, что необходимо создать «барьер» на первом вкладке, чтобы исправить все варианты, предшествующие этому первому вкладку, так как для этого потребуется импортировать обратно в Exel как TAB-разделитель для разделения исходного первого поля.

1 Ответ

0 голосов
/ 18 февраля 2020
  • Найти что: ^[^,]*\K,
  • Заменить на: $
  • Проверка регулярное выражение

Объяснение:

^        # beginning of line
  [^,]*  # 0 or more any character that is not a comma
  \K     # forget all we have seen until this position
  ,      # a comma
...