2015-11-05 78 views
1

我想使用正则表达式从字符串中删除特殊字符,但前提是字符位于字符串中间。应该保持领先和落后。例如:正则表达式替换除引导和trailiing以外的特殊字符

a + b + c将变为abc;

a + bc +会变成abc,因为尾随的+应该留下。

我有一个正则表达式,将取代所有特殊字符

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

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

+2

您的意思是“a + bc +会变成abc +”吗? – juharr

+2

“++ abc”怎么样?你想保留两个加号吗,还是只有第一个? – juharr

回答

4

您可以提前使用负外观和锚

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

,将匹配不属于第一个或最后一个非单词字符向后看,这意味着它会匹配第二个加“+ + abc“,从而将其转换为”+ abc“。

+0

谢谢,这有帮助! – SashaArz