Powershell正则表达式匹配返回空字符串

时间:2014-08-11 01:53:38

标签: regex powershell match

我使用正则表达式在Powershell中查找字符串,匹配函数返回空字符串行以及匹配的行。

对于以下四行文本文件input.txt,

[abc]

abc

[123]

123

以下代码打印出abc/blank line/123/blank line。我预计它只打印出abc123,想知道这是怎么发生的。

$readArray = Get-Content(input.txt)
foreach($line in $readArray) {
   $re = [regex] *** // Find the string in bracket

   $key = $re.match($line)
   if($key -ne $null) {
      write-host -$key.group[1].value
   }
}

2 个答案:

答案 0 :(得分:2)

试试这个(使用select-string) -

Get-Content -FilePath input.txt | 
  Select-String '\[(.+?)\]') | ForEach-Object {$_.Matches[0].Groups[1].Value}

答案 1 :(得分:1)

您可以使用此正则表达式获取标记内的内容:

\[(.*?)\]

<强> Working demo

enter image description here