正则表达式失败
问题描述:
我试图剔除那些字符串中的所有的东西都没有,所以我创建的正则表达式正则表达式失败
private static Regex _NonAlphaChars = new Regex("[^[A-Za-z0-9 ]]", RegexOptions.Compiled);
但是一个字母数字或空间,当我打电话_NonAlphaChars.Replace("Scott,", "");
它返回"Scott,"
我在做什么错,它不符合,
?
答
你做了一些有趣的双括号。改变它只是
[^A-Za-z0-9 ]
删除原始的表达成The Regex Coach解释您正则表达式为:
正则表达式是由表达式“的序列[[^ A-ZA-Z0-9] '和字符']'。
对于相反,我写的替代的解释是:
正则表达式是表示一切,但从字符“A”的字符“Z”的字符的范围中的字符类,从字符'a'到字符'z'的字符范围,从字符'0'到字符'9'的字符范围以及字符''。
+0
感谢您的链接到正则表达式教练!我一直试图在www.regular-expressions.info上进行研究,找出我的表情。 – 2010-06-11 16:49:45
答
private static Regex _NonAlphaChars =
new Regex("[^A-Za-z0-9 ]", RegexOptions.Compiled);
答
试试这个
[^A-Za-z0-9\s]
或
\ W
的问题是,你不能嵌套字符类这样的。因此,这个正则表达式实际上被解析为:否定集中的任何字符[[[A-Za-z0-9]](其中第二个[[实际上是类的一部分],后面跟着单个']' – Johrn 2010-06-11 16:51:13