簡體   English   中英

處理包含美元字符的正則表達式轉義替換文本

[英]Handling regex escape replacement text that contains the dollar character

string input = "Hello World!";
string pattern = "(World|Universe)";
string replacement = "$1";

string result = Regex.Replace(input, pattern, replacement);

使用以下示例,結果將是"Hello World!" ,因為$1被第一組替換(World|Universe) ,但是我想要的結果是"Hello $1!"

Regex.Escape方法旨在用於轉義 Regex 模式,而不是替代,因為它可以轉義其他字符,如斜線和其他 Regex 模式字符。 解決我的問題的明顯方法是讓我的替換等於"$$1" ,並將實現"Hello $1!" ,但我想知道美元符號是否是我必須轉義的唯一值(假設replacement是用戶生成的,我提前不知道),或者是否有幫助程序 function 已經這樣做了。

有誰知道 function 來轉義Regex.Replace(string input, string pattern, string replacement)使用的替換值?

來自MSDN

replacement參數指定要替換input中每個匹配項的字符串。 替換可以由文字文本和替換的任意組合組成。

定義了以下替換:

  • $數字
  • ${名字}
  • $$
  • $&
  • $`
  • $'
  • $+
  • $_

替換是替換模式中識別的唯一特殊結構。 不支持任何其他正則表達式語言元素,包括字符轉義和匹配任何字符的句點 (.)。 類似地,替換語言元素僅在替換模式中被識別,而在正則表達式模式中永遠無效。

所以看起來只有 $ 字符需要轉義。

暫無
暫無

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

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