簡體   English   中英

PowerShell/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM