Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式在文件共享的所有文件中查找电话号码_Regex_File_Phone Number_Fileshare - Fatal编程技术网

Regex 使用正则表达式在文件共享的所有文件中查找电话号码

Regex 使用正则表达式在文件共享的所有文件中查找电话号码,regex,file,phone-number,fileshare,Regex,File,Phone Number,Fileshare,我还有另一个问题在折磨我。我借用了下面的代码(我想不起来是从哪里来的),它看起来非常有希望确定文件共享中所有文件中的电话号码。代码对我来说绝对有意义,这就是为什么我不明白为什么它不起作用。我用我创建的一个文档来测试它,在文档中我放置了一个电话号码。它一无所获。任何帮助都将不胜感激 foreach ($file in Get-ChildItem -Recurse | Select-String -pattern '^\d{3}-\d{3}-\d{4}' | Select-Object -Uniq

我还有另一个问题在折磨我。我借用了下面的代码(我想不起来是从哪里来的),它看起来非常有希望确定文件共享中所有文件中的电话号码。代码对我来说绝对有意义,这就是为什么我不明白为什么它不起作用。我用我创建的一个文档来测试它,在文档中我放置了一个电话号码。它一无所获。任何帮助都将不胜感激

foreach ($file in Get-ChildItem -Recurse  | Select-String -pattern '^\d{3}-\d{3}-\d{4}' | Select-Object -Unique Path) {$file.path}

问题很可能是

^\d{3}-\d{3}-\d{4}

正则表达式要求电话号码是文档(或一行)中的第一个字符,而在实际文档中,它可能在中间某个地方。 将

^
锚定更改为
\b
(单词边界)。您可能还希望在潜在电话号码后添加此单词边界锚:

\b\d{3}-\d{3}-\d{4}\b

你能提供文件的内容吗?没有。它没有提供任何内容。谢谢!我试试这个。呃……不,它还是不起作用。我什么也不退。那么请提供一个文件样本。好的,我让它开始工作了。现在唯一的问题是它只拾取包含数字的.txt文档。这次我是通过测试社会保险号码来实现的:下面是我使用的:foreach($file in Get ChildItem-Recurse-filter | Select String-pattern'[0-9]{3}-[0-9]{2}-[0-9]{4}'-allmatches | Select Object Unique Path){$file.Path}