У меня есть следующий список:
\u042f 12,197,051
\ube44\ud574 93,721,409
HUMAN 45,754,677
Overwatch 43,437,031 OVERWATE
Теперь я хочу заменить пробелы новыми строками в числовых строках, разделенных запятыми, как показано ниже:
\u042f
12,197,051
\ube44\ud574
93,721,409
HUMAN
45,754,677
Overwatch
43,437,031
OVERWATE
Я попробовал следующее регулярное выражение:
Find What: (^\h*)(.*?)(\h*,.*$)
Replace With: \1\2\n\3
Но это не работает хорошо и дает мне следующие результаты:
\u042f 12
,197,051
\ube44\ud574 93
,721,409
HUMAN 45
,754,677
Overwatch 43
,437,031 OVERWATE
Где моя проблема с регулярным выражением?
NOTE : In Search / Find Pop up menu Please select Extended (\n, \r) checkbox, if display.
Вам нужно найти символ пробела и заменить его символом \n ИЛИ \r\n, который используется для новой строки.
Попробуйте это решение:
Find what : space character
Replace with : \n
Если вы хотите заменить ведущие пробелы перед числами, разделенными запятыми:
\h+(\d+(?:,\d+)+)(\h+)?
Узор соответствует:
\h+
Сопоставьте 1 или несколько горизонтальных пробельных символов.(\d+(?:,\d+)+)
Захватите группу 1, сопоставьте 1+ цифр и повторите 1 или более раз запятую и снова 1+ цифры(\h+)?
Необязательная группа 2, соответствует 1 или более горизонтальным пробельным символам.Посмотрите демонстрацию регулярных выражений
При замене следует новая строка, за которой следует значение группы 1, а если есть значение группы 2, добавьте еще одну новую строку, используя условие:
\n$1(?{2}\n)
Каждая строка образца входных данных содержит число с запятой. Итак, просто замените \h+ на \n. Или у вас есть и другие строки без запятой, где вы не хотите заменять пробелы? Если да, предоставьте лучший образец.