我需要一个正则表达式来查找非a-z或0-9
的所有字符我不知道正则表达式中NOT运算符的语法。
我希望正则表达式不是[a-z,A-Z,0-9]。
提前致谢!
答案 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 site和this cheat sheet (C# specific)。
答案 2 :(得分:3)
将^
放在角色类表达式的开头:[^a-z0-9]
答案 3 :(得分:1)
At start [^a-zA-Z0-9]
for condition;
pre_match();
pre_replace();
ergi();
答案 4 :(得分:0)
你也可以使用\W
这是非单词字符的简写(等于[^a-zA-Z0-9_]
)