2015-10-18 67 views
1

我有這行做什麼它應該做的事:替換與其他文本的文本文件

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

打開一個文件,並用b代替了。 但在現實世界中是:

<ToFaxNum:11111111> 

我想更換與

::11111111 

的:: 11111111可能是1和9之間,並從8至15個號碼的任何數字。 ToFaxNum之後:11111111有一個新行。

我還沒有嘗試過什麼,因爲我絕對不知道如何解決它。我不明白正則表達式。

謝謝。

+0

這是你在找什麼ToFaxNum(:\ d {8,15})'參見demo https://regex101.com/r/kY6gR2/3 –

+0

謝謝。需要替換的實際文本在它周圍有<>。 – user3019059

+0

那麼這將工作得很好''。看到新的演示https://regex101.com/r/kY6gR2/4 –

回答

1

這將迎刃而解

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

然後用:\1

說明

<ToFaxNum更換匹配的字符串:比簽署之後<ToFaxNum

少匹配

(:\d{8,15}):比賽和捕獲結腸:跟隨有至少8位和至多15個數字

>:匹配大於號>

檢查出demo

2

-replace操作者支持捕獲,只是附上圖案在()在第一個參數:

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

\d{8,15} 8個15連續的數字裝置之間。然後我們可以在第二個參數中將這個捕獲的組稱爲$1