通过正则表达式解析匹配项目不包含特定字符串

时间:2014-05-06 20:03:59

标签: regex powershell-v2.0

我有以下代码来解析文本文件以获取匹配的项目:

$content = Get-Content "InputFile.txt"
$pattern = "(?<item>[^\[\]]+)"
$found = $pattern.Matches($content)
$found | Select-Object -Property @{Expression={$_.Groups['item']}; Label='Items' | ft

到目前为止一切顺利。以上代码将从输入文件中获取所有与[...]模式匹配的项目(或带有[和]括号的项目)。

输入文件的示例内容:

something [item1] and then [item2abc]....

解析后的结果是

Items
------
item1
item2abc
....

现在我想过滤找不到包含特定字符串的项目,例如&#34; abc&#34;结束。不确定如何更新我的模式以查找没有&#34; abc&#34;的所有项目。结束?

2 个答案:

答案 0 :(得分:1)

如何使用“过滤”来过滤掉&#34; abc&#34;?

您的密码:

 ....
 $found | Select-Object -Property @{Expression={$_.Groups['item'] `
   -Replace 'abc$', '' # Add this `
   }; Label='Items' | ft

答案 1 :(得分:0)

如果你有一个你想在最后不允许的特定字符串,你可以像这样匹配正则表达式(警告,它很丑,但不匹配某些字符串是正则表达式不好的。):

.*[^a][^b][^c]$

禁止以abc

结尾的字符串