![](/img/trans.png)
[英]Unable to match a multiline regex with Powershell (but it does work in C#)
[英]PowerShell/C# regex multiline replace returns wrong line ending
我有一個帶有 CRFL 行結尾的文本文件,我用 $c = Get-Content -Raw file.txt 讀取了整個文件,該文件包含例如
exec Add a, b, c
exec Rem e, f, g
我嘗試用我的正則表達式替換它 $c = $c -replace '(?m)^([ \t] )(@exec@)([ \t]+)([a-zA-Z0-9_-] +)(. )$' '$1call$3$4($5)' 這不起作用,我不知道為什么,但要讓它工作,我需要運行 $c = $c -replace '(?m)^ ([ \t] )(@exec@)([ \t]+)([a-zA-Z0-9_-]+)(. )\r\n?$' '$1call$3$4($5)'結果是
call Add(a, b, c
)
exec Rem(e, f, g
)
) 括號后有一個 LF。 我希望得到
call Add(a, b, c)
exec Rem(e, f, g)
帶有 CRLF
PowerShell 和 $ 和 CRLF 有什么問題? 誰能告訴我如何得到正確的結果? 謝謝。
我無法讓您的正則表達式匹配任何內容,但這個更通用的替換應該可以解決問題:
-replace '(?m)^(\s*)([^\s]*)(\s*)([^\s]*)(\s*)(.*)$', '$1call$3$4$5($6)'
我找到了“錯誤”和解決方案。 最后的 $ 不適用於 MS 正則表達式
(?m)^...\r\n
這有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.