【发布时间】:2011-09-17 05:13:04
【问题描述】:
我需要一个正则表达式来查找所有不是 a-z 或 0-9 的字符
我不知道正则表达式中 NOT 运算符的语法。
我希望正则表达式不是 [a-z, A-Z, 0-9]。
提前致谢!
【问题讨论】:
标签: regex regex-negation
我需要一个正则表达式来查找所有不是 a-z 或 0-9 的字符
我不知道正则表达式中 NOT 运算符的语法。
我希望正则表达式不是 [a-z, A-Z, 0-9]。
提前致谢!
【问题讨论】:
标签: regex regex-negation
这是^。你的正则表达式应该使用[^a-zA-Z0-9]。当心:这个字符类在非 ascii 语言环境下可能会有意外的行为。例如,这将匹配 é。
如果正则表达式与 perl 兼容 (PCRE),您可以使用 \s 匹配所有空格。这扩展到包括空格和其他空白字符。如果它们与 posix 兼容,请使用 [:space:] 字符类(如:[^a-zA-Z0-9[:space:]])。我建议使用[:alnum:] 而不是a-zA-Z0-9。
如果要匹配行尾,则应在末尾包含$。仅当您的匹配应该跨越多行时才启用多行模式,它会降低较大文件的性能,因为必须将更多文件读入内存。
为什么不包含示例输入的副本、要匹配的文本以及用于匹配的程序?
【讨论】:
这很简单;您只需在字符集的开头添加^ 即可否定该字符集。
例如,以下模式将匹配不在该字符集中的所有内容——即,不是小写的 ASCII 字符或数字:
[^a-z0-9]
附带说明一下,我发现的一些更有用的正则表达式资源是 this site 和 this cheat sheet (C# specific)。
【讨论】:
将^ 放在字符类表达式的开头:[^a-z0-9]
【讨论】:
At start [^a-zA-Z0-9]
for condition;
pre_match();
pre_replace();
ergi();
【讨论】:
您也可以使用\W,它是非单词字符的简写(等于[^a-zA-Z0-9_])
【讨论】: