替换/删除与正则表达式(.NET)不匹配的字符

tif*_*tif 13 c# regex replace remove-if

我有一个正则表达式来验证字符串.但现在我想删除所有与我的正则表达式不匹配的字符.

例如

regExpression = @"^([\w\'\-\+])"

text = "This is a sample text with some invalid characters -+%&()=?";

//Remove characters that do not match regExp.

result = "This is a sample text with some invalid characters -+";
Run Code Online (Sandbox Code Playgroud)

有关如何使用RegExpression确定有效字符并删除所有其他字符的任何想法.

非常感谢

emf*_*rry 15

我相信你可以在一行中做到这一点(白名单并替换其他所有内容):

var result = Regex.Replace(text, @"[^\w\s\-\+]", "");
Run Code Online (Sandbox Code Playgroud)

从技术上讲,它会产生这样的结果:"这是带有一些无效字符的示例文本 - +",它与您的示例略有不同( - 和+之间的额外空格).


Dan*_*rth 11

就那么简单:

var match = Regex.Match(text, regExpression);
string result = "";
if(match.Success)
    result = match.Value;
Run Code Online (Sandbox Code Playgroud)

删除不匹配的字符与保持匹配的字符相同.这就是我们在这里所做的.

如果表达式可能在文本中多次匹配,则可以使用:

var result = Regex.Matches(text, regExpression).Cast<Match>()
                  .Aggregate("", (s, e) => s + e.Value, s => s);
Run Code Online (Sandbox Code Playgroud)