C# 使用正则表达式时筛选出不匹配的字符

C# 使用正则表达式时筛选出不匹配的字符,c#,.net,asp.net,C#,.net,Asp.net,我有一个字符串必须匹配@“^[\w*$][\w\s-$]*((\d{1,})){0,1}$” 如果它与这个正则表达式不匹配,我希望从字符串中删除不匹配的字符。我该如何设置呢?您可能想要类似的设置(但我不确定实际的问题)。如果不匹配,可能需要删除整个正则表达式;下面的代码不是这样做的: s = Regex.Replace(s, @"^[^[\w*\$][\w\s-\$]*((\d{1,})){0,1}]$", "") s = Regex.Replace(s, @"^[^\w*\$]([

我有一个字符串必须匹配@“^[\w*$][\w\s-$]*((\d{1,})){0,1}$”


如果它与这个正则表达式不匹配,我希望从字符串中删除不匹配的字符。我该如何设置呢?

您可能想要类似的设置(但我不确定实际的问题)。如果不匹配,可能需要删除整个正则表达式;下面的代码不是这样做的:

s = Regex.Replace(s, @"^[^[\w*\$][\w\s-\$]*((\d{1,})){0,1}]$", "")
s = Regex.Replace(s, @"^[^\w*\$]([\w*\$])[^\w*\$\s-]*([\w\s-\$]*).*$", "$1$2")

其思想是将每个想要的字符块与禁止字符列表交错,只保留您想要的字符。正则表达式的结尾有点奇怪,所以我简化了它。

这将替换上面正则表达式中的所有字符,我希望替换不在此正则表达式中的字符。如果可能的话,必须将其还原。@Younes=^char代表not^char表示行的开头,但我没有看到您在括号内加了一个^。例如,它为什么起作用?它是如何工作的?要点是什么?请通过回复,而不是在评论中回复(不带“编辑”、“更新:”或类似内容-答案应显示为今天所写)。何时\d应该匹配?数字已经包含在\w中。正如您所看到的,我不是正则表达式的最佳选择。我打算很快就深入探讨这个话题。谢谢你的帮助。