PowerShell提取文本文件中括号内字符串的方法
解决方法
要提取文本文件中括号()内的字符串,你可以用以下两种PowerShell方法:
方法一:直接用正则表达式匹配
$fileContent = Get-Content -Path "$PSScriptRoot/text.txt" -Raw $matchResult = [regex]::Match($fileContent, '\((.*?)\)') if ($matchResult.Success) { $matchResult.Groups[1].Value }
方法二:修正Select-String的用法
Select-String -Path "$PSScriptRoot/text.txt" -Pattern '\((.*?)\)' | ForEach-Object { $_.Matches.Groups[1].Value }
你之前的方法无效的原因:
- 第一个命令的正则
'(.*)?'没有限定匹配范围,会匹配整个文本内容,无法精准定位括号内的部分。 - 第二个命令语法错误,
"(?:)"是空的非捕获组,且没有正确调用匹配对象的属性,自然得不到结果。
内容的提问来源于stack exchange,提问作者Hemanth
相关产品推荐
相关产品推荐

