Powershell - 正则表达式

时间:2015-02-27 12:14:06

标签: regex powershell find

我试图从两个字符串之间存在的文件中检索字符串,我使用下面的正则表达式...并且它有效!

$Content = Get-Content $File
$Regex = [regex] "(?is)(?<=\b$String\b).*?(?=\b$String\b)"
$Matches = $Regex.Matches($Content)

但我有一个问题。我查找的实际字符串由用户设置,大小不等,从一到二十四个字符。如果它达到最大值,则不再分开&#39; $ String&#39;通过白色空间,因此成为该字符串的一部分,所以我认为这是无法找到它的问题。现在忍受我,我将解释我正在寻找的格式...它会...

$Name[Ten White Spaces]$StartOfStringImLookingFor[If string reaches 24 characters then 'no' white space]$Name

因此,如果问题是正则表达式在$StartOfStringImLookingFor到达$Name时无法执行其功能,那么理想情况将是......

查找$Name并返回接下来的34个字符,但这可能吗?我不知道怎么做,搜索没有返回任何内容。

1 个答案:

答案 0 :(得分:0)

查找$ Name并返回接下来的34个字符:

$regex = "$([regex]::Escape($Name))(.{34})"
[regex]::Matches($Content,$regex) |
foreach {$_.groups[1].value}