好的,所以我讨厌问RegEx问题,因为我喜欢通常自己弄清楚自己。另外,它的另一端会让人觉得很烦,因为人们可能会一直在问“为什么不直接查找”问题。VB.NET正则表达式,匹配转义字符
我的要求很简单。我想使用Regex.Replace
来将匹配替换为上下文相关值。我为此使用了MatchEvaluator
。但为了让事情更简单,可以说我是匹配%v
我想%v
是可以逃脱的,所以如果我使用\%v
它不会匹配。其他任何内容都应该匹配。
我想出的模式是这样的:(?:[^\\]|^)%v
它基本上匹配%v
如果它发生在字符串的开头,或者如果它遵循除了\
任何字符。它没有捕捉表达式的第一部分。
我知道这不是“正确”的做法。但它的工作就好了,直到我注意到,当我在使用这种模式的替代,它包括在更换%v
之前的字符(废话,对不对?)
所以,如果我有ThisIsAValue:%v
,我做Regex.Replace
,与更换字符串Value
,我的结果将是ThisIsAValueValue
而不是ThisIsAValue:Value
我试着用搜索引擎这一点,但事实上,“转义符”是正则表达式那么重,所有的结果都对转义字符的用法面向采摘代替他们与模式。
任何RegEx精明的人都知道我该如何正确地做到这一点?
作为一个方面说明,一个变化可以使(这可能会或可能不会进行表达对你更简单)是将`[^ \\] | ^`改成`[^ \\]?' – bdukes 2010-12-03 18:58:12