Skip to main content
 首页 » 编程设计

c#之正则表达式替换除前导和尾随之外的特殊字符

2024年02月05日29傻小

我想使用正则表达式从字符串中删除特殊字符,但前提是这些字符位于字符串的中间。前导和尾随应该保留。示例:

a+b+c会变成abc;

a+bc+ 也会变成 abc,因为后面的 + 应该保留。

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

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

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

请您参考如下方法:

你可以使用消极的前瞻和锚定的后视

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

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