Powershell - 正则表达式
Powershell - Regular Expression
我正在尝试从存在于两个字符串之间的文件中检索一个字符串,我正在为其使用下面的正则表达式...它有效!
$Content = Get-Content $File
$Regex = [regex] "(?is)(?<=\b$String\b).*?(?=\b$String\b)"
$Matches = $Regex.Matches($Content)
但是我有一个问题。我要查找的实际字符串是由用户设置的,大小不一,从 1 个到 24 个字符不等。如果它是最大值,它不再由白色 space 分隔 '$String',因此成为该字符串的一部分,所以我认为这是无法找到它的问题。现在请耐心等待,我将解释我正在寻找的格式...它是...
$Name[Ten White Spaces]$StartOfStringImLookingFor[If string reaches 24 characters then 'no' white space]$Name
因此,如果问题是正则表达式在 $StartOfStringImLookingFor
达到 $Name
时无法执行其功能,那么理想的情况是...
找到 $Name
和 return 接下来的 34 个字符,但这可能吗?我不知道该怎么做,搜索也没有 return 任何东西。
查找 $Name 和 return 接下来的 34 个字符:
$regex = "$([regex]::Escape($Name))(.{34})"
[regex]::Matches($Content,$regex) |
foreach {$_.groups[1].value}
我正在尝试从存在于两个字符串之间的文件中检索一个字符串,我正在为其使用下面的正则表达式...它有效!
$Content = Get-Content $File
$Regex = [regex] "(?is)(?<=\b$String\b).*?(?=\b$String\b)"
$Matches = $Regex.Matches($Content)
但是我有一个问题。我要查找的实际字符串是由用户设置的,大小不一,从 1 个到 24 个字符不等。如果它是最大值,它不再由白色 space 分隔 '$String',因此成为该字符串的一部分,所以我认为这是无法找到它的问题。现在请耐心等待,我将解释我正在寻找的格式...它是...
$Name[Ten White Spaces]$StartOfStringImLookingFor[If string reaches 24 characters then 'no' white space]$Name
因此,如果问题是正则表达式在 $StartOfStringImLookingFor
达到 $Name
时无法执行其功能,那么理想的情况是...
找到 $Name
和 return 接下来的 34 个字符,但这可能吗?我不知道该怎么做,搜索也没有 return 任何东西。
查找 $Name 和 return 接下来的 34 个字符:
$regex = "$([regex]::Escape($Name))(.{34})"
[regex]::Matches($Content,$regex) |
foreach {$_.groups[1].value}