Powershell正则表达式提取的值不是以中间字符串结尾

时间:2014-10-10 11:39:12

标签: regex 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 power shell中。回顾似乎不起作用

1 个答案:

答案 0 :(得分:2)

我不熟悉powershell的正则表达式风格,但看起来你不需要从头开始看。

您可以使用延迟量词+?来代替第一次停止:

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

请参阅demo here