c#Regex.Replace [^ \ w]还会删除下划线?

时间:2017-10-05 19:50:31

标签: c# regex

所以我花了太长时间在这上面并尝试了很多没有运气的东西。我认为我对正则表达式很不满意。我试图清理一串所有非字母数字字符,但留下空格。我不想使用[^A-Za-z0-9 ]+适当的语言问题。

以下是我尝试过的一些事情:

cleaned_string = Regex.Replace(input_string, @"[^\w ]+[_]+);

cleaned_string = Regex.Replace(input_string, ([^\w ]+)([_]+));

cleaned_string = Regex.Replace(input_string, [^ \w?<!_]+);

编辑:感谢下面一位非常乐于助人的人。

我的最终产品最终成为了这个:[_]+|[^\w\s]+

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

这应该对你有用

// Expression: _|[^\w\d ]
cleaned_string = Regex.Replace(input_string, @"/_|[^\w\d ]", "");

答案 1 :(得分:2)

您可以使用

var res = Regex.Replace(s, @"[\W_-[\s]]+", string.Empty);

请参阅Dataframe from CSV

查看\W模式:它匹配任何非单词字符。现在,您想要从\W中排除空白匹配模式 - 使用regex demo[\W-[\s]]。这匹配任何字符\W匹配,但匹配的\s匹配。并且还要匹配_,只需将其添加到角色类。添加+量词,一次删除匹配字符的整个连续块。

<强>详情

  • [ - 开始一个角色类
    • \W_ - 任何非字词或_字符
    • -[\s] - 除了与\s(空白)模式匹配的字符
  • ] - 字符类的结尾
  • + - 一次或多次。