正则表达式替换除了前导和trailiing之外的特殊字符

时间:2015-11-05 17:29:31

标签: c# .net regex

我想使用正则表达式从字符串中删除特殊字符,但前提是字符位于字符串的中间。领先和尾随应该留下来。例如:

a + b + c将变为abc;

a + bc +也会变成abc,因为尾随+应该保持不变。

我有一个将替换所有特殊字符的正则表达式

var newString = Regex.Replace(myString, @"[^\w]", string.Empty)

我不知道如何跳过第一个和最后一个字符。考虑到字符串长度可以从字符串长度开始,如果没有正则表达式,我必须总是检查长度,如果我想要子字符串等等。这一切都是可行的,但如果它完成了它会很好正则表达式与一行代码。有可能吗?

1 个答案:

答案 0 :(得分:4)

您可以使用负面向前看并使用锚点

(?<!^)[^\w](?!$)

这将匹配不是第一个或最后一个的非单词字符,这意味着它将匹配“++ abc”中的第二个加号,从而将其转换为“+ abc”。