1

Я хочу удалить пробелы из списка телефонных номеров. Номера телефонов представлены в следующем формате: «+33 x xx xx xx xx» большую часть времени (включая цитаты). Пространства могут быть размещены по-разному.

В notepad++ мое поле «Найти что:» выглядит следующим образом и эффективно соответствует каждому найденному номеру телефона: "\Q+\E[0-9 ]+" . Но я не понимаю, как удалить часть этого (пробелы).

Я думал о том, чтобы сделать это в два этапа: сначала выбрать результаты поиска с шаблоном соответствия выше, а затем выполнить замену с установленным флажком "В выборе", но я не могу найти, как выбрать все результаты поиска одновременно ,

1 ответ1

3

«Простой» способ - использовать группы захвата для каждой группы чисел. Для фиксированного формата это хорошо работает. Найти:

"\+33 ([0-9]) ([0-9]{2}) ([0-9]{2}) ([0-9]{2}) ([0-9]{2})"

И заменить на:

"+33$1$2$3$4"

Другой способ немного более гибкий, но в то же время может немного сбить с толку, поскольку он использует якорь \G который не так распространен, с якорем \K , который может быть даже менее распространенным:

(?:"\+33|\G)[^\s"]*\K 

(В конце есть пробел) И заменить ничем.

regex101 demo

(?:          # Begin group
  "\+33      # Match "+33
|            # OR
  (?!^)\G    # At the end of the previous match (and exclude start of lines)
)            # End group
[^\s"]*      # Any non-space or quote characters
\K           # Reset the match
             # Match a space

И \G и \K недоступны в некоторых более ранних версиях Notepad++. Я не помню точно, когда они были представлены, но они работают на v6.5.2.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .