我有一个电话总机上的多个文件日志,最近我的电话接线员中更改了拨号方式,现在不需要长途电话拨打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并删除它们,然后向前移动所有以下数字。什么是正确的正则表达式和替代品呢?
答案 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)