如果不匹配,请替换字符。

34 浏览
0 Comments

如果不匹配,请替换字符。

我正在寻找一个能够去除非法字符的正则表达式。但是我不知道这些字符会是什么。

例如:

在一个过程中,我希望我的字符串能够与([a-zA-Z0-9/-]*)匹配。因此,我想要替换所有不符合上述正则表达式的字符。

0
0 Comments

问题:(Replace chars if not match)的出现原因及解决方法

在这个问题中,我们需要解决的是当字符不匹配时如何替换字符。解决这个问题的方法是使用正则表达式来匹配字符并进行替换。

问题的原因是由于我们需要替换字符,但是只有当字符匹配时才能进行替换。所以我们需要使用正则表达式来匹配字符并进行替换。

解决方法是使用[^a-zA-Z0-9/-]+这个正则表达式来匹配不符合要求的字符。这个正则表达式的含义是匹配不是字母、数字、斜杠或短横线的字符。当匹配到这样的字符时,我们就可以进行替换操作。

在正则表达式中,[^ ]表示对字符集取非,即匹配不是该字符集中的字符。所以我们可以使用[^a-zA-Z0-9/-]+来匹配不是字母、数字、斜杠或短横线的字符。

为了更好地理解正则表达式的字符类,可以参考Character Classes

通过使用上述的正则表达式,我们可以替换不符合要求的字符,从而解决了(Replace chars if not match)这个问题。

0
0 Comments

问题的出现原因:这篇文章介绍了一个帮助方法,用于替换或删除不匹配正则表达式的字符。作者提到该方法适用于相对简单的字符集,但并不一定适用于描述有效字符集的所有正则表达式。

解决方法:作者提供了一个静态公共方法ReplaceNotExpectedCharacters,该方法接受三个参数:文本(text),允许的正则表达式模式(allowedPattern)和替换字符串(replacement)。方法的实现使用了正则表达式的[^ ]模式,该模式在字符类的开头使用时表示取反,即匹配不在该字符类中的字符。方法通过调用Regex.Replace方法,将不匹配allowedPattern的字符替换为replacement字符串,并返回替换后的结果。

代码如下:

/// 
/// Replaces not expected characters.
/// 
/// The text.
/// The allowed pattern in Regex format, expect them wrapped in brackets
/// The replacement.
/// 
static public string ReplaceNotExpectedCharacters(this string text, string allowedPattern, string replacement)
{
    allowedPattern = allowedPattern.StripBrackets("[", "]");
    //[^ ] at the start of a character class negates it - it matches characters not in the class.
    var result = Regex.Replace(text, @"[^" + allowedPattern + "]", replacement);
    return result; //returns result free of negated chars
}

0