我有一个简单的正则表达式,可以将所有匹配项返回到文本文件中的文件:
\\Root_Dir.*?'
他们以“\Root_dir
”开头,以单引号结束。它工作正常,但问题是我想要排除扩展名为.rep
的文件。根据我的阅读,我试过:
\\Root_Dir.*?(?!\.rep)'
这仍包含\Root_dir\nextdir\happy.rep
等文件。
我还想在可能的情况下排除结尾的单引号
我正在使用PowerShell 2.0,我认为它支持lookaronds。
答案 0 :(得分:1)
你应该使用负面的背后隐藏 ..即你需要为.rep
\\Root_dir[^']*(?<!\.rep)(?=')
答案 1 :(得分:0)
\\Root_Dir.*?(?!\.rep)'
考虑后面的部分(在.*?
之后)要求的内容,在字符串中的相同位置:
\.rep
显然在示例中这是正确的,因为.*?
匹配.rep
,因此前方的负面展望得到满足。
由于.NET支持可变宽度环视 1 ,因此在为报价单独执行之前,需要在前瞻中执行可变宽度部分:
\\Root_Dir(?!.*?\.rep).*?'
然而,我很想将其分解为:
$value.StartsWith("\\Root_Dir")
(?<!\.rep)'$
(即引号前面没有......)。1 没有人告诉PM / dev其他人认为这太难了。