regexp-php-reference-php-anchors-8

  • PCRE regex
    syntax
  • Anchors

  • Anchors
  • Anchors

    Anchors

    Outside a character class, in the default matching
    mode, the circumflex character (^) is an assertion which
    is true only if the current matching point is at the start of the
    subject string. Inside a character class, circumflex (^)
    has an entirely different meaning (see below).

    Circumflex (^) need not be the first
    character of the pattern if a number of alternatives are involved,
    but it should be the first thing in each alternative in which it
    appears if the pattern is ever to match that branch. If all
    possible alternatives start with a circumflex (^), that
    is, if the pattern is constrained to match only at the start of the
    subject, it is said to be an “anchored” pattern. (There are also
    other constructs that can cause a pattern to be anchored.)

    A dollar character ($) is an assertion
    which is TRUE only if the current
    matching point is at the end of the subject string, or immediately
    before a newline character that is the last character in the string
    (by default). Dollar ($) need not be the last character of
    the pattern if a number of alternatives are involved, but it should
    be the last item in any branch in which it appears. Dollar has no
    special meaning in a character class.

    The meaning of dollar can be changed so that it
    matches only at the very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at compile or matching time.
    This does not affect the \Z assertion.

    The meanings of the circumflex and dollar
    characters are changed if the PCRE_MULTILINE option is set. When this is the case,
    they match immediately after and immediately before an internal
    “\n” character, respectively, in addition to matching at the start
    and end of the subject string. For example, the pattern /^abc$/
    matches the subject string “def\nabc” in multiline mode, but not
    otherwise. Consequently, patterns that are anchored in single line
    mode because all branches start with “^” are not anchored in
    multiline mode. The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set.

    Note that the sequences \A, \Z, and \z can be used
    to match the start and end of the subject in both modes, and if all
    branches of a pattern start with \A is it always anchored, whether
    PCRE_MULTILINE is set or not.