将文本替换为文件中的其他文本

时间:2015-10-18 16:17:23

标签: regex powershell

我有这条线做了它应该做的事情:

Get-Content $OutFax\$newName |ForEach-Object {$_ -replace "a", "b" }| Set-Content $OutFax\$txtName

打开文件并用b替换a。 但在现实世界中,a是:

<ToFaxNum:11111111>

我想用

替换它
::11111111

:: 11111111可以是1到9之间的任何数字,也可以是8到15个数字。在ToFaxNum:11111111之后有一个新行。

我没有尝试任何东西,因为我完全不知道如何解决它。我不懂正则表达式。

谢谢。

2 个答案:

答案 0 :(得分:2)

-replace运算符支持捕获,只需在第一个参数中将模式包含在()中:

PS C:\> "<ToFaxNum:14435242624>" -replace '<ToFaxNum:(\d{8,15})>$','::$1'
::14435242624

\d{8,15}表示8到15个连续数字。然后,我们可以在第二个参数中将此捕获的组称为$1

答案 1 :(得分:1)

这样会很好

<ToFaxNum(:\d{8,15})>

然后用:\1

替换匹配的字符串

<强>说明

<ToFaxNum :匹配小于签名<后跟<ToFaxNum

(:\d{8,15}) :匹配并捕获冒号:,后跟至少8位数,最多15位

> :匹配大于号>

查看demo