regex - 从美国电话号码及其分机号码中删除格式
问题描述
您好需要帮助获取电话号码并使用替换或正则表达式进行扩展
电话 (123) 455-6789 --> 1234556789 (123) 577-2145 转81245 --> 1235772145 扩大 (123) 455-6789 --> (123) 577-2145 分机81245 --> 81245
"(123) 455-6789" -replace "[()\s\s-]+|Ext\S+", ""
"(123) 455-6789 Ext 2445" -replace "[()\s\s-]+|Ext\S+", ""
这解决了电话号码但不解决分机。
解决方案
你可以试试:
^\((\d{3})\)\s*(\d{3})-(\d{4})(?: ext(\d{5}))?$
上述正则表达式的解释:
^, $
- 分别代表行的开始和结束。\((\d{3})\)
- 表示与里面的数字匹配的第一个捕获组()
。\s*
- 匹配一个空白字符零次或多次。(\d{3})-
- 表示第二个捕获组正好捕获 3 个数字,后跟一个-
.(\d{4})
- 表示第三个捕获组与数字完全匹配 4 次。(?: ext(\d{5}))?
-(?:
表示非捕获组ext
- 后跟空格和文字ext
。(\d{5})
- 正好代表数字 5 次。)
- 关闭非捕获组。?
- 表示使整个非捕获组可选的量词。
您可以在此处找到上述正则表达式的示例演示。
Powershell 命令:
PS C:\Path\To\MyDesktop> $input_path='C:\Path\To\MyDesktop\InputFile.txt'
PS C:\Path\To\MyDesktop> $output_path='C:\Path\To\MyDesktop\outFile.txt'
PS C:\Path\To\MyDesktop> $regex='^\((\d{3})\)\s*(\d{3})-(\d{4})(?: ext(\d{5}))?$'
PS C:\Path\To\MyDesktop> select-string -Path $input_path -Pattern $regex -AllMatches | % { "Phone Number: $($_.matches.groups[1])$($_.matches.groups[2])$($_.matches.groups[3]) Extension: $($_.matches.groups[4])" } > $output_path
推荐阅读
- python - 在 alpha_vantage api、get_intraday 中未获取给定时间间隔的最后一根柱线数据
- node.js - 使用 Termux 在 Android 上安装 NodeJS 项目时出现问题
- kubernetes - 部署“A”检查一组检查并扩展部署“B”以运行任务
- haskell - 使用 WAI 获取 HTTP 请求的绝对形式请求目标
- typescript - 有没有扩展@types/node/index.d.ts 的好方法
- python - Python/Pandas:比较两个数据框中的多列,如果没有找到匹配项,则删除行
- php - 如何在统一文本中使用 regx 模式粉碎数组?
- python - CNN架构:对“好”和“坏”图像进行分类
- php - Spatie Browsershot 在 Linux 服务器上不起作用。得到错误 sh: node: command not found
- java - android studio错误:空对象引用上的'boolean java.lang.String.equals(java.lang.Object)'