top
Loading...
PERL5中字符邊界'’的概念
問題:
為什么字符邊界'b對我不起作用?

兩個對“b”的錯誤觀念:
  一,它相當于"s+"
  二,它是空白字符和非空字符的邊界
以上兩個觀念都是不對的。

'b' 是一個介于'w'或者'W'字符之間的部份(也就是,'b'是'word'字符的邊界)。就像`^', `$', 以及其它所有的’錨‘一樣,它是一個沒有寬度的聲明。因此它并不吃掉任何的字符。PERL幫助頁面描述了所有正則表達式標識符的屬性。
這里有個`b'的錯誤應用,以及它的修正的例子。
    "two words" =~ /(w+)b(w+)/;     # 錯誤
    "two words" =~ /(w+)s+(w+)/;     # 正確

    " =matchless= text" =~ /b=(w+)=b/;  # 錯誤
    " =matchless= text" =~ /=(w+)=/;    # 正確
雖然它們可能做不是你想讓它們做的事,`b' 和`B'仍是很有用的。例如一個正確使用`b'的例子,可以看在多行中匹配相同的字符的例子。
一個使用`B'的例子是模式`BisB'。這個只會找出在單詞中的'is',比如"thistle",但是它不會匹配"this" 或者 "island".
北斗有巢氏 有巢氏北斗