如何使用正则表达式和Powershell提取字符串“Task(12345)”中的数字?

时间:2009-07-16 17:43:13

标签: regex powershell

如何使用正则表达式和Powershell提取字符串“Task(12345)”中的数字?我尝试了以下,但没有机会。

$file = gc myfile.txt
$matches = ([regex]"Task\(\d{1,5}\)").matches($file)
# Get a list of numbers

有人可以帮我找到正确的正则表达式吗?

3 个答案:

答案 0 :(得分:7)

请记住,Select-String使这个单行:

PS> Select-String 'Task\((?<num>\d{1,5})\)' myfile.txt | 
        %{$_.matches[0].Groups['num'].value}

答案 1 :(得分:5)

您想要在文件中出现所有内容吗?如果是这样,我会做以下

$r = "^Task\((\d+)\)$"
$res = gc myFile.txt | 
  ?{ $_ -match $r } |
  %{ $_ -match $r | out-null ; $matches[1] }

答案 2 :(得分:0)

如果你想要5位数字,你可以使用:

^Task\([\d{1,5}]{5}\)$

否则对于任意位数,请使用:

^Task\([\d{1,5}]+\)$