我從一張票中收到以下形式的注釋:
[Employee ID]:
[First Name]: Test
[Last Name]: User
[Middle Initial]:
[Email]:
[Phone]:
[* Last 4 of SSN]: 1234
我嘗試使用以下代碼來獲取名字(在本例中為“測驗”:
if ($incNotes -match '(^\[First Name\]:)(. * ?$)')
{
Write-Host $_.matches.groups[0].value
Write-Host $_.matches.groups[1].value
}
但我什么也得不到。有沒有一種方法可以讓我只使用一個長的正則運算式模式來獲取我需要的資訊?資訊在通過的每張票上保持相同的格式。
我將如何獲得 [First Name] 之后的資訊:等等....
uj5u.com熱心網友回復:
您可以使用
if ($incNotes -match '(?m)^\[First Name]: *(\S )') {
Write-Host $matches[1]
}
請參閱正則運算式演示。如果您可以在和名稱之間有任何型別的水平空白字符:,請將空格替換為[\p{Zs}\t],或某種[\s-[\r\n]].
詳情:
(?m)-RegexOptions.Multiline使^匹配任何行位置的開始,并$匹配行結束的選項^- 一行的開始\[First Name]:- 一個[First Name]:字串*- 零個或多個空格(\S )- 捕獲組 1:一個或多個非空白字符(替換為\S.*或\S[^\n\r]*匹配任何文本,直到字串結尾)。
請注意,這-match是一個不區分大小寫的正則運算式匹配運算子,-cmatch如果您需要區分大小寫的行為,請使用。此外,它只找到第一個匹配項并$matches[1]回傳 Group 1 值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467584.html
上一篇:執行路徑中有變數名的bat檔案
