2014-10-10 98 views
0

我需要一个正则表达式,它将与PowerShell一起工作。Powershell正则表达式提取值不以中间字符串结尾

它需要一个字符串像

..\..\..\packages\Microsoft.Samples.Security.SSPI.1.0.0\lib\net11\Microsoft.Samples.Security.SSPI.dll 
..\..\..\packages\Antlr3.3.4.1.9004\lib\Antlr3.Runtime.dll 

提取的优化版本号和名称。在这些情况下:

Samples.Security.SSPI and 1.0.0 
Antlr3 and 3.4.1.9004 

我相信

packages\\(?<name>[^\\\\]+(?!<!\.[0-9]+\.))\.(?<version>[0-9]+(\.[0-9]+)+)[\\\/] 

应该做的伎俩

但它似乎并没有在Windows电源外壳没有。回头看起来没有工作

回答

2

我不熟悉powershell的正则表达式的味道,但它似乎你不需要后面的看起来开始。

可以使用惰性限定符+?停在第一次出现,而不是:

packages\\(?<name>[^\\]+?)\.(?<version>\d+(?:\.\d+)*) 

demo here

相关问题