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

4
如何使用正则表达式和Powershell从字符串“Task(12345)”中提取数字?我尝试了以下方法,但没有成功。
$file = gc myfile.txt
$matches = ([regex]"Task\(\d{1,5}\)").matches($file)
# Get a list of numbers

请问有人能帮我找到正确的正则表达式吗?

3个回答

7

请记住,使用Select-String可以使这成为一行代码:

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

5

您想获取文件中的所有出现次数吗?如果是的话,我会按照以下步骤进行:

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

0
如果您想确切地在那里使用5个数字,您可以使用:
^Task\([\d{1,5}]{5}\)$

否則對於任意位數的情況,請使用以下內容:
^Task\([\d{1,5}]+\)$

对于任意数量的数字,为什么不只是使用^Task\([\d+\)$? - Salty
它不起作用。任务编号在源文件中有点分散。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接