所以我花了太长时间在这上面并尝试了很多没有运气的东西。我认为我对正则表达式很不满意。我试图清理一串所有非字母数字字符,但留下空格。我不想使用[^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]+
感谢您的帮助!
答案 0 :(得分:2)
这应该对你有用
// Expression: _|[^\w\d ]
cleaned_string = Regex.Replace(input_string, @"/_|[^\w\d ]", "");
答案 1 :(得分:2)
您可以使用
var res = Regex.Replace(s, @"[\W_-[\s]]+", string.Empty);
查看\W
模式:它匹配任何非单词字符。现在,您想要从\W
中排除空白匹配模式 - 使用regex demo:[\W-[\s]]
。这匹配任何字符\W
匹配,但匹配的\s
匹配。并且还要匹配_
,只需将其添加到角色类。添加+
量词,一次删除匹配字符的整个连续块。
<强>详情
[
- 开始一个角色类
\W_
- 任何非字词或_
字符-[\s]
- 除了与\s
(空白)模式匹配的字符]
- 字符类的结尾+
- 一次或多次。