Regex 从txt文件中删除除数字以外的所有内容
我需要帮助。我有一个包含很多信息的文本文件,包括姓名、方向和电话,但我只需要将电话保存在文件中。是这样的:Regex 从txt文件中删除除数字以外的所有内容,regex,parsing,text,Regex,Parsing,Text,我需要帮助。我有一个包含很多信息的文本文件,包括姓名、方向和电话,但我只需要将电话保存在文件中。是这样的: Stephanie D. Ferebee Rua Inácio de Andrade, 128 (41) 5123313 James M. Tidwell Rua Oitenta e Quatro, 1698 (43) 2571815 Sherry M. Rossman Rua Fernandes Vieira, 218 (41) 2931075 我怎么能只保留档案上的号码?它们都
Stephanie D. Ferebee
Rua Inácio de Andrade, 128
(41) 5123313
James M. Tidwell
Rua Oitenta e Quatro, 1698
(43) 2571815
Sherry M. Rossman
Rua Fernandes Vieira, 218
(41) 2931075
我怎么能只保留档案上的号码?它们都像:“(XX)XXXXXXX”(包括开头的空格)。假设所有电话号码都以
(digit
)开头,您可以使用grep
命令,如下所示:
$ grep "^ ([0-9]" file
(41) 5123313
(43) 2571815
(41) 2931075
如果您只需要电话号码的正则表达式,请使用此正则表达式: 模式
\(\d{2}\) \d{7}
它将仅捕获您提供的格式中的数字:
(XX) XXXXXXX
如果您在Windows上,则可以使用PowerShell
Get-Content C:\test.txt | Select-String "\(\d{2}\) \d{7}"
您需要根据文本文件更改路径(此处
C:\test.txt
)。因此,要使用TextWrangler和搜索与替换功能,您可以使用以下正则表达式来查找数字:
(\d{2}) \d{7}
但这无助于您仅保留所需内容。要选择特定组并删除其余组,您可以执行以下操作:
注意:(
和)
字符用于捕获组,因此您可以尝试以下操作:
查找:
替换:
$3
$3
表示只保留第三个匹配组,即(\d{2})\d{7}
另外请注意,如果您的号码之间有空行,您可以开始第二次搜索并替换,然后搜索模式^\r
。替换为nothing,瞧
或者,您可以将其组合成一个regexp(在搜索字段中):
/(.*)(.*)(\(\d{2}\)\d{7})(.*)((.(\r}\n)*)/g
您没有提到编程语言,所以总结一下:用户在Mac上,希望通过终端进行搜索和替换=grep答案适用。或者TextWrangler(这里的手册:(p114))。我正在使用Mac。我可以使用终端吗?不,Mac OS X不支持PowerShell。但是,您可以使用此处发布的各种grep命令,它们应该可以工作。请下次在问题中指定您的操作系统。现在,我只需删除所有不包含该模式的行:(我该怎么做?@user3044979什么语言?它只是纯文本。我使用Rubular.com在线正则表达式编辑器的模式,它以我提供的格式注释所有数字,但我不知道如何删除不包含它的行。我不明白。我发现所有数字都使用(\d{2})\d{7}(使用提供的完整表达式:/(.*)(\(\d{2}\)\d{7})(.*)(.*)(.*)(.*))/g
,而不仅仅是(\d{2})\d{7}
(只能说它找到了一些东西,但不能替换)。在替换字段中,您必须输入:$3
,以从搜索中选择所需内容。它显示“模式”/((.*d{2}”)\d{7}(...*)(.*)(.*)/g“找不到。”。我做错了什么吗?也许可以尝试不带标志:(.*)(\(\d{2})\d{7}(.*)(.*)(\r}\n)*
这对我来说很有效:是的,现在开始工作了!非常感谢您的时间,先生!您救了我的命!:)祝您度过愉快的一天!
$3