簡體   English   中英

將多行正則表達式中的字符串替換為行尾令牌

[英]Replace a string in multiline regex with end of line token

我得到了以下正則表達式

var fixedString = Regex.Replace(subject, @"(:[\w]+ [\d]+)$", "", 
                                                        RegexOptions.Multiline);

這不起作用。 如果我使用\\r\\n ,它可以工作,但我想支持所有類型的換行符。 作為另一個答案陳述我必須使用RegexOptions.Multiline才能使用$作為行結束標記(而不是字符串結尾)。 但它似乎沒有幫助。

我究竟做錯了什么?

我不知道你想要實現什么,我想我明白了,你想要替換行尾的換行符。

問題是$是零寬度斷言。 它與換行符不匹配,它匹配\\n 之前的位置。

你可以做其他不同的事情:

  1. 如果可以匹配所有后續換行符,也意味着所有后面的空行,您可以這樣做:

     var fixedString = Regex.Replace(subject, @"(:[\\w]+ [\\d]+)[\\r\\n]+", ""); 
  2. 如果您只想匹配行后的換行符並保持跟隨空行,則必須為所有可能的組合創建一個模式,例如:

     var fixedString = Regex.Replace(subject, @"(:[\\w]+ [\\d]+)\\r?\\n", ""); 

    這將匹配組合\\n\\r\\n

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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