Удалить символ в определенной позиции с помощью регулярного выражения в vscode - PullRequest
0 голосов
/ 04 января 2019

У меня есть несколько файловых журналов с телефонного коммутатора, недавно в моем операторе телефона изменился способ набора, теперь нет необходимости набирать 0 для междугородних вызовов.

example: 
original
12/12/16 15:25    *345 46 78968752                     00:06'23
12/12/16 15:26     516 57 72668547                     00:07'31 
12/12/16 15:27     468 03 048846587                    00:09'34 
12/12/16 15:28    *516 08 058846587                    00:03'45 

replace with
12/12/16 15:25    *345 46 78968752                     00:06'23 
12/12/16 15:26     516 57 72668547                     00:07'31 
12/12/16 15:27     468 03 48846587                     00:09'34 
12/12/16 15:28    *516 08 58846587                     00:03'45 

Поэтому я должен найти все 0 в позиции 27 и удалить их, двигаясь вперед на все следующие числа. Что такое правильное регулярное выражение и замена todo, что?

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы можете использовать это

(\*\d{3}\s\d{2}\s)\[0\]+

enter image description here

0 голосов
/ 04 января 2019

Если ваш номер телефона всегда состоит из 8 цифр после необязательного 0, тогда это регулярное выражение работает:

https://regex101.com/r/OLgGOx/1

0(\d{8})

и заменить на $1

После вашего комментария ниже 0(\d{2,8}) работает.

Или попробуйте

  (^[\S\s]{26})(0?)(.*)

для явного удаления 27-го символа, если он равен 0.

Заменить на $1$3

После вашего комментария выше попробуйте:

(^[\S\s]{26})(?:(0)([\d]*)(\s))

заменить на:

$1$3$4$4

[к сожалению, у меня нет времени, чтобы объяснить это до завтра.]

В основном он использует прием условного захвата одного пробела - группы 4 - если в 27-й позиции есть 0. А затем добавление дополнительной группы 4. Это работает, потому что если в позиции 27 не было 0, группы 2, 3 и 4 все равно пусты.

См. https://regex101.com/r/OLgGOx/2

и включите настройку PCRE2 в vscode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...