【问题标题】:Regex help NOT a-z or 0-9正则表达式帮助不是 a-z 或 0-9
【发布时间】:2011-09-17 05:13:04
【问题描述】:

我需要一个正则表达式来查找所有不是 a-z 或 0-9 的字符

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

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

提前致谢!

【问题讨论】:

    标签: regex regex-negation


    【解决方案1】:

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

    已编辑

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

    如果要匹配行尾,则应在末尾包含$。仅当您的匹配应该跨越多行时才启用多行模式,它会降低较大文件的性能,因为必须将更多文件读入内存。

    为什么不包含示例输入的副本、要匹配的文本以及用于匹配的程序?

    【讨论】:

    • 我添加了一些 [^a-zA-Z0-9\t] 我添加了 \t 以忽略空格。它还在行尾捕捉换行符。我读到的内容说我需要打开多行,我想我需要一个 $ 但我不确定。
    • [^a-zA-Z0-9\s] \s 为我处理了行尾和空格。谢谢大家!
    【解决方案2】:

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

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

    [^a-z0-9]
    

    附带说明一下,我发现的一些更有用的正则表达式资源是 this sitethis cheat sheet (C# specific)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:
        At start [^a-zA-Z0-9]
        
        for condition;
        pre_match();
        pre_replace();
        ergi();
        

        try this

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-22
            • 1970-01-01
            • 1970-01-01
            • 2010-12-11
            • 1970-01-01
            • 2012-08-05
            • 1970-01-01
            • 2011-05-19
            相关资源
            最近更新 更多