2010-07-18 38 views
4

我想問一個關於令牌的非常基本的問題,
在閱讀有關正則表達式時,將書籤標記caret(^)作爲零寬度標記, 可以請您告訴我實際上零寬度意味着什麼?零寬度令牌?

+1

這已經得到滿意的答覆,但我想補充的是,這樣的事情的正確名稱是零寬度**斷言**。你的書是否使用了* token *這個詞?如果是這樣,它是什麼書? – 2010-07-18 14:06:24

回答

6

這意味着它匹配而不消耗任何字符。這只是一個位置斷言(「必須在行的開始處」)。另一個例子是零寬度預讀和後顧斷言。例如,Perl正則表達式/abc(?=123)/僅當它跟在序列123後面才匹配序列abc,但它實際上並不消耗123

+0

是啊,謝謝了:) :) – Tarun 2010-07-18 11:53:31

3

它是一個零寬度標記,因爲它是一個與零寬度字符串匹配的標記,即包含零個字符的字符串。字符串中的字符數有時稱爲寬度。它只匹配空字符串,如果它出現在字符串的開頭,或者根據選項在任何行的開始處。

零寬度標記的另一個示例是\b,它與字邊界匹配。^

+0

謝謝你的見解和不正確的信息 – Tarun 2010-07-18 11:58:33

0

^只是告訴你一個上下文並且不代表任何物理字符或字符。

^的上下文是一行的開始。

其他例子是:

$ - 行上下文結束

\ b - 單詞邊界