1.7.3 明确的事情 |
无论你何时匹配一个句型, 它将在每个位置进行匹配直到它找到一个匹配。一个界限允许你限制句型所能匹配的范围。事实上,一个界限匹配一个空,但按着上下文,它是一类特殊的空。你可以把这个称为一个规则,或一个限制,或一个断言。无论你怎样称它,它将匹配零长度的东西,或者成功或者失败。(如果它失败, 意思是这个句型不能匹配这种特殊方式。如果有其他方式,这个句型将继续匹配其他方式)
这个特别的字符串是, 匹配一个词界限, 它被定义为一个word字符()和一个非word字符()之间的空。(这个并不存在于字符串的头和尾的字符被认为是非word字符。)例如,
/\bFred\b/ 将匹配"The Great fred"和"Fred the Great", 但不匹配"Frederick the Great",因为在Frederick中的"de"不包含一个词界限。
类似地,对于字符串的开始和结束也有一个界限。如果它是一个句型的开始,"^"将匹配字符串开始的"空"。因此,句型/^Fred/将匹配"Frederickthe Great"而不匹配"The Great Fred", 所以/Fred^/将不匹配这两个。(事实上, 这没有什么意义)$符号象^一样起作用, 它是匹配字符串末尾的空而不是字符串的开始[6]。
[6]这是一个很简化的, 因为我们这儿假设你的字符串只包含一行, 实际上, ^和$是行的开始和结束的一个界限, 而不是字符串的开始和结束。我们将在下一章强调这些。
所以当我们说下面时,你可能想到:
next LINE if /^#/;
我们的意思是"如果这行以#开始, 那么继续LINE循环的下一次循环。
Copyright: NPACT |