使用Powershell在同一字符串中查找两个不同的模式匹配项并输出检测到的字符串

时间:2019-06-17 20:56:39

标签: powershell

我试图找到一种方法,使用powershell在同一行中搜索两个不同的字符串匹配项,然后输出该字符串。

例如,我想在文本文件中查找包含单词“ dog”和“ fence”的所有句子。

因此它将命中并检测/输出

句子1:“狗跳过篱笆”

但不匹配:

句子2:“狗去了公园”

句子3:“他们把栅栏漆成白色”

选择字符串将对单个模式执行此操作,但是我似乎无法使它在同一行中用于两个模式匹配。

例如,这将检测到两个模式,但是由于要分别查找该模式,因此将检测所有三个句子:

Select-String -Path C:\Logs -Pattern 'Dog','Fence'

我知道可以使用grep和awk实现此目的的简便方法,但是我希望能找到一种在PowerShell中完成此操作的方法。

2 个答案:

答案 0 :(得分:2)

没有Regex AND运算符,但是基于我对Regex的有限了解和对Stackoverflow的快速搜索(因为必须先询问过),我遇到了this,这表明您可能想要尝试一下:

Select-String -Path C:\logs -Pattern "(?=.*dog)(?=.*fence)"

答案 1 :(得分:0)

-Pattern接受正则表达式,因此可以使用:

Select-String -Path C:\Logs\* -Pattern 'dog.*fence'