在vscode中使用正则表达式删除特定位置的字符

时间:2019-01-04 16:24:30

标签: regex replace visual-studio-code

我有一个电话总机上的多个文件日志,最近我的电话接线员中更改了拨号方式,现在不需要长途电话拨打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 

因此,我必须在位置27中找到全0并删除它们,然后向前移动所有以下数字。什么是正确的正则表达式和替代品呢?

2 个答案:

答案 0 :(得分:0)

如果您的电话号码始终是可选的0后的8位数字,则此正则表达式有效:

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

并在vscode中启用PCRE2设置。

答案 1 :(得分:0)

您可以使用此

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

enter image description here