在字元類別之外,在預設比對模式中,抑揚符號 (^
) 是一個斷言,僅在目前比對點位於主旨字串的開頭時才為真。在字元類別內部,抑揚符號 (^
) 具有完全不同的含義(請參閱下文)。
如果涉及多個替代方案,則抑揚符號 (^
) 不一定是樣式的第一個字元,但如果樣式要比對該分支,則它應該是它出現的每個替代方案中的第一個。如果所有可能的替代方案都以抑揚符號 (^
) 開頭,也就是說,如果樣式被限制為僅在主旨的開頭處比對,則稱其為「錨定」樣式。(還有其他可以導致樣式被錨定的建構。)
美元符號 ($
) 是一個斷言,僅當目前比對點位於主旨字串的末尾,或緊接在字串中最後一個字元換行符號之前時才為true
(預設)。如果涉及多個替代方案,則美元符號 ($
) 不一定是樣式的最後一個字元,但它應該是任何出現分支中的最後一個項目。美元符號在字元類別中沒有特殊含義。
可以通過在編譯或比對時設定 PCRE_DOLLAR_ENDONLY 選項來變更美元符號的含義,使其僅在字串的最末尾比對。這不會影響 \Z 斷言。
如果設定了 PCRE_MULTILINE 選項,則抑揚符號和美元符號的含義會被變更。當這種情況發生時,它們會分別在內部 "\n" 字元之後和之前立即比對,此外還會在主旨字串的開頭和結尾處比對。例如,模式 /^abc$/ 在多行模式下比對主旨字串 "def\nabc",但在其他情況下則不會比對。因此,由於所有分支都以 "^" 開頭而在單行模式下錨定的樣式在多行模式下不會被錨定。如果設定了 PCRE_MULTILINE,則會忽略 PCRE_DOLLAR_ENDONLY 選項。
請注意,序列 \A、\Z 和 \z 可用於在兩種模式下比對主旨的開頭和結尾,並且如果樣式的所有分支都以 \A 開頭,則無論是否設定 PCRE_MULTILINE,它始終會被錨定。