2010-07-18 39 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 - 单词边界