我有一个包含以下任何数字格式的文件
12.456.7890
12-456-7890
123.456.7890
(123)456.7890
(123).456.7890
123-456-7890
(123)-456-7890
(123)456-7890
是否可以使用正则表达式替换,以便最终输出数字始终采用格式(123)456-7890或(12)456-7890
答案 0 :(得分:2)
是的,它是:
s/\(?(\d\d\d)\)?[-.]?(\d\d\d)[-.]?(\d\d\d\d)/($1)$2-$3/g
我应该提到以上内容也将解析以下两个:
123)456.7890
(123456.7890
答案 1 :(得分:2)
您可以使用两个替换来执行此操作:
itextsharp
第一个删除所有非数字字符。第二个在每个组之间插入所需的字符。
你应该考虑到这种方法会弄乱任何与你的示例输入中的行不同的行。保护自己的一种方法可能是这样的:
perl -lpe 's/\D//g; s/(\d{3})(\d{3})(\d{4})/($1)$2-$3/' file
即。在继续之前,确保该行上的匹配数为10。