使用Regex从字符串中删除标点符号

Sje*_*mie 18 c# regex

我对Regex真的很糟糕,但我想要删除所有这些.,;:''$'@!?/*&^ - +字符串中的字符串

string x = "This is a test string, with lots of: punctuations; in it?!.";
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?

Jos*_* M. 59

首先,请阅读此处了解有关正则表达式的信息.值得学习.

你可以用这个:

Regex.Replace("This is a test string, with lots of: punctuations; in it?!.", @"[^\w\s]", "");
Run Code Online (Sandbox Code Playgroud)

意思是:

[   #Character block start.
^   #Not these characters (letters, numbers).
\w  #Word characters.
\s  #Space characters.
]   #Character block end.
Run Code Online (Sandbox Code Playgroud)

最后它写着"替换任何不是单词字符或空格字符的字符".

  • 请注意 - 像 ö、æ、ñ、ô 等内容不一定是“\w”中包含的“单词字符”。 (6认同)
  • 注意,我认为`\ w`字符组必须带有下划线'_'。http://stackoverflow.com/a/2998550/1804678 (3认同)
  • 这是一个美丽的答案。我一心想要找到一种方法来替换所有标点符号,以至于我从未想过只保留所有非标点符号(用 \w 和 \s 更容易表示)。 (2认同)
  • @MikeNereson 这是真的,但这就是问题所要求的。 (2认同)
  • @grofte,你是对的,这个 [^\w\s] 是用正则表达式匹配标点符号问题的一个流行答案,但是很少有人知道这不是多语言用例的正确答案。我们也是。它给我们的系统带来了很多麻烦和意想不到的问题,我们今天发现了这个错误。 (2认同)