c#Regex.Replace [^ \ w]也删除下划线?
所以我花了很长时间在这个上,并且尝试了很多没有运气的东西。我认为我在正则表达式上很糟糕。我正在尝试清理所有非字母数字字符的字符串,但留下空格。我不想使用[^A-Za-z0-9 ]+
由于语言问题。c#Regex.Replace [^ w]也删除下划线?
这里有几件事情我已经尝试:
cleaned_string = Regex.Replace(input_string, @"[^\w ]+[_]+);
cleaned_string = Regex.Replace(input_string, ([^\w ]+)([_]+));
cleaned_string = Regex.Replace(input_string, [^ \w?<!_]+);
编辑:解决了由于下面一个非常乐于助人的人。
我的最终产品最终是这样的:[_]+|[^\w\s]+
感谢所有帮助!
这应该为你工作
// Expression: _|[^\w\d ]
cleaned_string = Regex.Replace(input_string, @"/_|[^\w\d ]", "");
这工作完美。我只是在表达中似乎缺少'|'。请投票,因为某些工具喜欢投票。 –
没有概率的正则表达式有时候也会让我头疼! –
我也注意到我不需要'\ d',因为它只用'\ w'。 –
您可以使用
var res = Regex.Replace(s, @"[\W_-[\s]]+", string.Empty);
看看\W
模式:它匹配任何非单词字符。现在,您想要从\W
中排除空白匹配模式 - 使用character class subtraction:[\W-[\s]]
。这匹配任何字符\W
匹配除了什么\s
匹配。并且要匹配_
,只需将其添加到角色类。添加+
量词可一次性删除整个连续的匹配字符块。
详细
-
[
- 任何非单词或_
字符 -
-[\s]
- - 除了用\s
(空白)图案 匹配字符一个字符类
-
\W_
的开始 -
]
- 字符类的结尾 -
+
- 一次或多次。
不错,我在我的代码中换成了'\ s',但保持大致相同。好信息! –
很好的解释,up-voteed,书签的regexstorm。 –
我想你只是需要转义下划线'[^ \ w \ _'' –
你的例子都没有编译。什么是“语言问题”?你的示例输入/输出是什么? – Blorgbeard
@ stephen.vakil'\ _'是我尝试的第一件事情之一,它引起了一个例外。 –