正则表达式不帮助a-z或0-9

时间:2011-06-17 13:42:19

标签: regex regex-negation

我需要一个正则表达式来查找非a-z或0-9

的所有字符

我不知道正则表达式中NOT运算符的语法。

我希望正则表达式不是[a-z,A-Z,0-9]。

提前致谢!

5 个答案:

答案 0 :(得分:13)

是^。你的正则表达式应该使用[^a-zA-Z0-9]。注意:此字符类可能具有非ascii语言环境的意外行为。例如,这将匹配é。

被修改

如果正则表达式是perl兼容的(PCRE),则可以使用\s来匹配所有空格。这将扩展为包含空格和其他空白字符。如果它们是posix兼容的,请使用[:space:]字符类(如:[^a-zA-Z0-9[:space:]])。我建议使用[:alnum:]代替a-zA-Z0-9

如果您想匹配一行的结尾,则最后应包含$。只有当您的匹配应该扩展到多行时,才会启用多行模式,这会降低较大文件的性能,因为必须将更多文件读入内存。

为什么不包含样本输入的副本,要匹配的文本以及用于执行此操作的程序?

答案 1 :(得分:11)

这很简单;您只需在字符集的开头添加^即可取消该字符集。

例如,以下模式将匹配该字符集中不包含的所有内容 - 即,不是小写ASCII字符或数字:

[^a-z0-9]

作为旁注,我发现的一些更有用的正则表达式资源是this sitethis cheat sheet (C# specific)

答案 2 :(得分:3)

^放在角色类表达式的开头:[^a-z0-9]

答案 3 :(得分:1)

At start [^a-zA-Z0-9]

for condition;
pre_match();
pre_replace();
ergi();

try this

答案 4 :(得分:0)

你也可以使用\W这是非单词字符的简写(等于[^a-zA-Z0-9_]