我有这条线做了它应该做的事情:
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之后有一个新行。
我没有尝试任何东西,因为我完全不知道如何解决它。我不懂正则表达式。
谢谢。
答案 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