Как удалить символы из совпадающей строки?


1

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

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

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


Содержит ли текст что-либо кроме телефонных номеров? Поиск "" и замена его на "" не вариант?
Excellll

Ответы:


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.


Спасибо, это работает! Но я не понимаю некоторых вещей: какой смысл создавать группу? И в чем разница между (?:а (:? Кроме того, я не понимаю роль \G.
Резак

@Cutter Это будет слишком долго объяснять в комментарии, но вот потенциально полезные ссылки: \Gи(?: ... )
Джерри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.