正規表示式教程之位置匹配詳解

2022-10-07 07:51:08 字數 1241 閱讀 9088

注:在所有例子中正規表示式匹配結果包含在源文字中的【和】之間,有的例子會使用j**a來實現,如果是j**a本身正規表示式的用法,會在相應的地方說明。所有j**a例子都在jdk1.6.0_13下測試通過。

一、問題引入

如果想匹配一段文字中的某個單詞(暫不考慮多行模式,將在後面介紹),我們可能會像下面這樣:

文字:yesterday is history, tomorrow is a mystery, but today is a gift.

正規表示式:is

結果:yesterday 【is】 h【is】tory, tomorrow 【is】 a mystery, but today 【is】 a gift.

分析:本來只是要匹配單詞is,但把其他單詞中包含的is也匹配出來了。要解決這個問題,使用邊界界定符,也就是在正規表示式裡用一些元字元來表明我們想讓匹配操作在什麼位置(或邊界)發生。

二、單詞邊界

一種常用的邊界是由限定符\b指定的單詞邊界,\b用來匹配單詞的開始和結尾。更確切地說,它是匹配這樣乙個位置,這個位置位於乙個能夠用來構成單詞的字元(字母、數字、下劃線,也就是與\w相匹配的字元)和乙個不能用來構成單詞的字元(與\w相匹配的字元)之間。來看前面的例子:

文字:yesterday is history, tomorrow is a mystery, but today is a gift.

正規表示式:\bis\b

結果:yesterday 【is】 history, tomorrow 【is】 a mystery, but today 【is】 a gift.

分析:在原始文字中,單詞is的前後都有乙個空格,而這與模式\bis\b匹配(空格是用來分隔單詞的字元之一)。而單詞history中也包含了is,因為它的前後分別有乙個字元h和t,這兩個字元都不程式設計客棧能與\b匹配。

如果不匹配乙個單詞邊界,則使用\b。如:

文字:please enter the nine-digit id as it appears on your color - coded pass-key.

正規表示式:\b-\b

結果:please enter the 【nine-digit】 id as it appears on your color - coded 【pass-key】.

分析:\b-\b將匹配乙個前後都不是單詞邊界的連字元,nine-digit和pass-key中連字元前後都沒有空格,所以能夠匹配,而color - coded中連字元前後都有空格,所以不能匹配。

三、字串邊界

正規表示式匹配位置速查

正則是匹配模式,要麼匹配字元,要麼匹配位置。下表是匹配位置的元字元 位置 模式說明 匹配開頭的位置,當正則有修飾符 m 時,表示匹配行開頭位置 匹配結尾的位置,當正則有修飾符 m 時,表示匹配行結尾位置 b匹配單詞邊界,即,w 與 w 與 w w 與 之間的位置 b匹配非單詞邊界,即,w 與 w w...

正規表示式教程 正規表示式匹配規則 6

正規表示式教程 正規表示式匹配規則 6 2007 05 11 08 28 基本模式匹配 一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once 這...

正規表示式入門之位置匹配

位置匹配用來解決在什麼地方進行字串匹配操作的問題。例1 要求匹配文字裡的cat單詞 文字 the cat scattered his food all over the room.正規表示式 cat 結果 the cat s catteredhis food all over the room.從結...