對於上下文,請檢查this SO帖子。Powershell腳本中的邏輯轉換
完整的腳本:
(get-content file.txt -ReadCount 0) -replace '([^,]")"','$1' | set-content newfile.txt
我專門找邏輯在腳本的這部分譯文:
'([^,]")"','$1' |
有人可以請任何解釋的邏輯/語法,還是指向正確的方向?
對於上下文,請檢查this SO帖子。Powershell腳本中的邏輯轉換
完整的腳本:
(get-content file.txt -ReadCount 0) -replace '([^,]")"','$1' | set-content newfile.txt
我專門找邏輯在腳本的這部分譯文:
'([^,]")"','$1' |
有人可以請任何解釋的邏輯/語法,還是指向正確的方向?
'([^,]")"'
是一個正則表達式匹配任意字符,除了一個逗號後面是兩個連續的雙引號。括號將第一個字符和第一個雙引號組合在一起。
'$1'
是對比賽中的組的反向引用,其在替換中意味着「用僅第一組替換比賽」,例如,在字符串foo""bar
中,序列o""
將被替換爲o"
,因此刪除了第二個雙引號。
|
是一個管道,它將替換結果送入管道中的下一個cmdlet(Set-Content newfile.txt
)。
美麗。非常感謝。 –
'([^,]")"','$1'
讓我們打入兩件正則表達式模式'([^,]")"'
和替換文本'$1'
這一點。正則表達式模式中的()
創建了通過$1
在替換文本中引用的未命名捕獲組,即它是第一個(也是唯一的情況下)一組parens。匹配的&捕獲在此捕獲組中的是除逗號後面的任何字符,後跟雙引號,並且在捕獲組之外還有另一個雙引號。因此,它將消除兩個連續雙引號中的一個,除非第一個前面加逗號。
非常感謝您的解釋。 upvoted。 –
看起來有點像正規表達式給我。 –
能否請您在搜索模式中解釋操作員?我找不到'^'符號的含義。 –