处理一个包含美元字符转义正则表达式替换文本(Handling regex escape replac

2019-06-23 11:48发布

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方法旨在用于转义一个正则表达式模式,不更换,因为它可以逃脱其它字符,如斜线和其它正则表达式模式字符。 最明显的修复我的问题是有我的替代等于"$$1" ,并且将实现"Hello $1!" ,但我想知道,如果美元符号是我逃避(假设只值replacement为用户生成的,我不知道它的时间提前),或者是有没有已经做了这个一个辅助功能。

有谁知道一个函数逃脱的重置价值Regex.Replace(string input, string pattern, string replacement)使用?

Answer 1:

从MSDN :

替换参数指定是替换输入每个匹配的字符串。 更换可以由文字文本和任意组合的替代 。

以下取代被定义 :

  • $号
  • $ {NAME}
  • $$
  • $&
  • $`
  • $”
  • $ +
  • $ _

取代在替换模式唯一认可的特殊结构。 没有其他的正则表达式语言元素,包括字符和逃逸的期间(。),该匹配任何字符,被支持。 类似地,取代的语言元素被识别仅在替换模式,并且从未在正则表达式模式有效。

因此,它看起来就像是只需要转义$字符。



文章来源: Handling regex escape replacement text that contains the dollar character