代码之家  ›  专栏  ›  技术社区  ›  YOU

我应该何时在regex中使用\a?

  •  14
  • YOU  · 技术社区  · 15 年前

    线端锚 $ 匹配,即使有额外的尾随 \n 在匹配的字符串中,因此我们使用 \Z 而不是 $

    例如

    ^\w+$ 将匹配字符串 abcd\n 但是 ^\w+\Z 不是

    怎么样 \A 什么时候使用?

    4 回复  |  直到 15 年前
        1
  •  23
  •   Amber    15 年前

    最常用于同时启用多行匹配的情况。自从 \A 仅匹配整个文本的开头,而不是仅匹配行的开头,正则表达式可以跨行匹配 ^ A 是不同的。

        2
  •  4
  •   brian d foy    15 年前

    与任何regex功能一样,当它更准确地描述了您所需要的内容,而不是任何更一般的功能时,您可以使用它。如果您知道您希望在字符串的开头完全匹配(而不是逻辑行),请使用描述这一点的regex功能。不要使用在不需要的情况下可能匹配的regex功能。

    对于Perl,请参见 perlre 有关零宽度断言的详细信息,请参阅文档:

    \b  Match a word boundary
    \B  Match except at a word boundary
    \A  Match only at beginning of string
    \Z  Match only at end of string, or before newline at the end
    \z  Match only at end of string
    \G  Match only at pos() (e.g. at the end-of-match position
        of prior m//g)
    
        3
  •  2
  •   Tim Pietzcker    15 年前

    根据您使用的标签,与您的问题不直接相关,但至少有一种语言(Ruby),其中 ^ $ 总是 表示行首/行尾,因此如果要匹配字符串的开头/结尾,则 使用 \A \Z \z .

    如果你想让你的正则表达式保持可移植性,最好的做法是明确说明你想让它们做什么,而不是依赖于模式修饰符的可用性,比如 \m Regex.MULTILINE 等。

    另一方面,JavaScript、POSIX和XML不支持 A \z . 这就是工具喜欢的地方 RegexBuddy 为您提供方便的将regex从一种口味转换为另一种口味。

        4
  •  2
  •   Jan Goyvaerts    15 年前

    如果您使用的regex风格支持 \A 那么我建议你总是用它来代替 ^ . A 始终只在字符串的开头匹配所有支持它的风格。换行没有问题。

    ^ 根据regex风格和regex选项,只能在字符串的开头或任何行的开头匹配。

    通过使用 A 当其他人必须维护您的代码时,您可以减少混淆的可能性。