C# 正则表达式替换除前导字符和拖尾字符以外的特殊字符 < >我想使用正则表达式从字符串中删除特殊字符,但是只有当字符位于字符串中间时才行。领先和落后应该保持。例如:

C# 正则表达式替换除前导字符和拖尾字符以外的特殊字符 < >我想使用正则表达式从字符串中删除特殊字符,但是只有当字符位于字符串中间时才行。领先和落后应该保持。例如:,c#,.net,regex,C#,.net,Regex,a+b+c将成为abc a+bc+将alos变为abc,因为后面的+应该保持不变 我有一个正则表达式,它将替换所有特殊字符 var newString = Regex.Replace(myString, @"[^\w]", string.Empty) 我不知道如何跳过第一个和最后一个字符。考虑到字符串长度可以从开始,如果不使用正则表达式,我必须始终检查长度,如果我想使用子字符串,等等。这都是可行的,但如果使用正则表达式只需一行代码就可以了。有可能吗?您可以使用带有锚定的“反向向前看”和“向后看

a+b+c将成为abc

a+bc+将alos变为abc,因为后面的+应该保持不变

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

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

我不知道如何跳过第一个和最后一个字符。考虑到字符串长度可以从开始,如果不使用正则表达式,我必须始终检查长度,如果我想使用子字符串,等等。这都是可行的,但如果使用正则表达式只需一行代码就可以了。有可能吗?

您可以使用带有锚定的“反向向前看”和“向后看”

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

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

您可以使用负数向前看和向后看

(?<!^)[^\w](?!$)
(?
这将匹配不是第一个或最后一个的非单词字符,这意味着它将匹配“++abc”中的第二个加号,从而将其转换为“++abc”。

您的意思是“a+bc+将成为abc+”?关于“++abc”呢?您想保留两个加号,还是只保留第一个加号?您的意思是“a+bc+将成为abc+”?关于“++abc”呢?您想保留两个加号,还是只保留第一个加号?