2012-04-27 83 views
-1

我必须处理一个可能包含各种非标准字符的字符串,并且我被要求提供一个正则表达式来匹配并删除所有字符非标点符号和空格以外的字母数字。.net正则表达式,用于除空格以外的所有不可见的非字母数字字符

有没有办法做到这一点?

+1

你的意思是喜欢重音字符? – Jack 2012-04-27 07:55:03

+0

@Jack取决于他对“字母数字”的定义。我看了一下德国维基百科,它说“任何字母和任何数字”,因此我的回答是,但[英文维基百科](http://en.wikipedia.org/wiki/Alphanummeric)表示“用于描述**拉丁字母**和阿拉伯数字的集合“。 – stema 2012-04-27 08:05:56

+0

你确定你实际上并不想*用最接近的ASCII码替换非标准字符*吗?把某个人的名字,比如'Æponine',变成'ponine',似乎有点不礼貌。 – 2012-04-27 08:30:05

回答

2

regular-expressions.info

\p{P}\p{Punctuation}:任何标点字符的。

\p{L}\p{Letter}:来自任何语言的任何类型的字母。

\p{Nd}\p{Decimal_Digit_Number}:除表意性脚本以外的任何脚本中的数字零到九。然后

你的正则表达式应该是这样

[^\p{L}\p{Nd}\p{P} ]+ 

这将匹配任何不是一个字母,而不是数字,不是标点符号,而不是一个空间。

0

使用此图案:@"[^\s\w]| "
^方括号中的符号表示否定。因此,这将匹配除字符(数字,字母和下划线)和空格([^\s\w])或空格之外的所有内容。

0

使用以下正则表达式。

[^a-zA-Z0-9!.,'" ] 

将任何其他允许的标点符号添加到表达式中。最后一个空的空格是space字符。

如果允许使用下划线,则使用\w\s将允许空白字符。

相关问题