第一次發帖。
我有以下代碼來替換電子郵件的后綴及其作業正常
用@testdomain.com 替換@ 符號后的所有字符
$a = '[email protected]'
$b = $a -replace "[?=@].*", '@testdomain.com'
$b
[email protected]
我想做的是將實際的左側“源”正則運算式捕獲到一個變數中,該變數將是@domain.com,以便我知道我要替換的內容而我不知道該怎么做。
對不起,如果這之前已經發布了。
謝謝
uj5u.com熱心網友回復:
所以,我不確定這是否可以僅使用-replace運算子而不使用-match它會將捕獲組存盤在$Matches自動變數上。
這是regex直接使用該類的方法:
$a = '[email protected]'
$Capture = @{}
$b = [regex]::Replace($a, "[?=@].*", {
param($s)
'@testdomain.com'
$Capture.Value = $s.Value
})
$b # => john.doe@testdomain.com
$Capture.Value # => @domain.com
這就是我可以想到的只使用-replace,將分隔符(//在這種情況下)添加到替換的字串中,然后是捕獲組$0,然后拆分替換。盡管如此,這顯然不是一個強大的解決方案。
$a = '[email protected]'
$b, $capture = $a -replace "[?=@].*", '@testdomain.com//$0' -split '//'
$b # => john.doe@testdomain.com
$capture # => @domain.com
uj5u.com熱心網友回復:
要更改用戶部分,您可以替換^.*(?=@):
PS ~> $a = '[email protected]'
PS ~> $a -replace '^.*(?=@)', 'jane.doe'
[email protected]
該(?=@)構造稱為前瞻,并在 之前的位置描述零長度字串@。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372230.html
