替换匹配的正则表达式的一部分

时间:2014-10-22 20:25:31

标签: regex powershell

我试图解析一些非常严重分隔的文件,并最终将它们更改为CSV。我希望匹配数字,空格和字母,并用逗号替换空格。

例如,如果我有“08:34:45家庭”的话。我希望能够认出这个' 5 h'并且#39; 08:34:45,家庭'。我理解为什么我下面的内容不能正常工作,但有人可以解释如何告诉Powershell我想保留\ d和\ D吗?

Get-Content -path C:\file.txt |

ForEach-Object {$_ -replace "(\d\s\D)",','}

1 个答案:

答案 0 :(得分:2)

您在括号( )中放置的内容由正则表达式捕获,您可以使用第一组$ 1,第二组$ 2等访问它。

所以你可以尝试两个捕获组:

$_ -replace '(\d)\s(\D)', '$1,$2'

另请参阅:http://www.powershelladmin.com/wiki/Powershell_regular_expressions#Example_-_Replace_With_Captures了解更多详情。