到現在為止,所看到的示例都只考慮查詢任何地方出現的章節標題。出現的任何乙個字串 'chapter' 後跟乙個空格和乙個數字可能是乙個真正的章節標題,也可能是對其他章節的交叉引用。由於真正的章節標題總是出現在一行的開始,因此需要設計乙個方法只查詢標題而不查詢交叉引用。
定位符提供了這個功能。定位符可以將乙個正規表示式固定在一行的開始或結束。也可以建立只在單詞內或只在單詞的開始或結尾處出現的正規表示式。下表包含了正規表示式及其含義的列表:
字元描述^匹配輸入字串的開始位程式設計客棧置。如果設定了regexp物件的multiline屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。$匹配輸入字串的結束位置。如果設定了regexp物件的multiline屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。\b匹配非單詞邊界。
不能對定位符使用限定符。因為在乙個換行符或者單詞邊界的前面或後面不會有連續多個位置,因此諸如 '^*' 的表示式是不允www.cppcns.com許的。
要匹配一行文字開始位置的文字,請在正規表示式的開始處使用 '^' 字元。不要把 '^' 的這個語法與其在括號表示式中的語法弄混。它們的語法根本不同。
要匹配一行文字結束位置的文字,請在正規表示式的結束處使用 '$' 字元。
要在查詢章節標題時使用定位符,下面的 visual basic scripting edition 正規表示式將匹配位於一行的開始處最多有兩個數字的章節標題:
/^chapter [1-9][0-9]/vbscript 中相同功能的正規表示式如下:
"^chapter [1-9][0-9]"乙個真正的章節標題不僅出現在一行的開始,而且這一行中也僅有這乙個內容,因此,它必然也位於一行的結束。下面的表示式確保所指定的匹配只匹配章節而不會匹配交叉引用。它是通過建立乙個只匹配一行文字的開始和結束位置的正規表示式來實現的。
/^chapter [1-9][0-9]$/對 vbscript 則使用:
"^chapter [1-9][0-9]$"匹配單詞邊界有少許不同,但卻給正規表示式增加了乙個非常重要的功能。單詞邊界就是單詞和空格之間的位置。非單詞邊界就是其他任何位置。下面的 visual basic scripting edition 表示式將匹配單詞 'chapter' 的前三個字元,因為它們出現在單詞邊界後:
/\bcha/對 vbscript 為:
"\bcha"這裡 '\b' 操作符的位置很關鍵。如果它位於要匹配的字串的開始,則將查詢位於單詞開頭處的匹配;如果它位於改字串的末尾,則查詢位於單詞結束處的匹配。例如,下面的表示式將匹配單詞 'chap' 中的 'ter',因為它出現在單詞邊界程式設計客棧之前:
/ter程式設計客棧\b/以及
"ter\b"下面的表示式將匹配 'apt',因為它位於 'chapter' 中間,但不會匹配 'aptitude' 中的'apt':
/\bapt/以及
"\bapt"這是因為在單詞 'chapter' 中 'apt' 出現在非單詞邊界位置,而在單詞 'aptitude' 中位於單詞邊界位置。非單詞邊界操作符的位置不重要,因為匹配與乙個單詞的開頭或結尾無關。
本文位址:
VBS教程 正規表示式簡介 建立正規表示式
構造正規表示式的方法和建立數學表示式的方法一樣。也就是用多種元字元與操作符將小的表示式結合在一起來建立更大的表示式。可以通過在一對分隔符之間放入表示式模式的各種元件來構造乙個正規表示式。對 visual basic scr程式設計客棧ipt程式設計客棧ing edition 而言,分隔符為程式設計客...
VBS教程 正規表示式簡介 限定符
有時候不知道要匹配多少字元。為了能適應這種不確定性,正規表示式支援限定符的概念。這些限定符可以指定正規表示式的乙個給定元件必須要出現多少次才能滿足匹配。下表給出了各種限定符及其含義的說明 字元描述 匹配前面的子表示式零次或多次。例如,zo 能匹配 z 以及 zoo 等價於。匹配前面的子表示式一次或多...
正規表示式定位符
once 這個模式包含乙個特殊的字元 表示該模式只匹配那些以once開頭的字串。例如該模式與字串 once upon a time 匹配,與 there once was a man from newyork 不匹配。正如如 符號表示開頭一樣,符號用來匹配那些以給定模式結尾的字串。bucket 這個...