正規表示式學習筆記(四) 位置匹配

2022-03-30 12:26:18 字數 1917 閱讀 2012

限定符\b指定單詞邊界,b是英文boundary(邊界)的首字母,例如

文字:the catscattered his food all over the room.

正規表示式:cat

結果:the cat scatteredhis food all over the room.

正規表示式:\bcat\b

結果:the cat scattered his food all overthe room.

如果想不匹配乙個單詞的邊界(),使用\b ,例如下面的例子匹配多餘的空格

正規表示式:\b-\b

分析:\b-\b

將匹配乙個前後都不是單詞邊界的連字元(因為空格和連字元都不是字母數字或下劃線)。只有color – cpded中的連字元可以與之匹配

我們知道使用^可以用來取非,其實他還有匹配乙個字串的開頭的作用。

當^出現在乙個字元集合中(被放到[和]之間)並且緊跟在左方括號[的後面是,才能發揮「求非」作用。

如果是在乙個字元集合的外面並且位於乙個模式的開頭,^將匹配字串的開頭。例如,下面的測試可以檢查乙個文件是否為xml文件(xml文件必須是<?xmlversion ="1.0"?>型別,而且必須放在開頭)

文字

this is not a xml document, real not a xmldocument

<?xml version="1.0"ecoding=」utf-8」 ?>

正規表示式

結果

this is not a xml document, real not a xmldocument

<?xml version="1.0"ecoding=」utf-8」 ?>

我們就以為這是xml檔案了,其實這不是xml檔案,xml檔案必須是在開頭有上述標示才行

正確的正規表示式:^\s*

使用$即可

(?m)說明是分行模式,必須出現在整個模式的最前面,下例將會找出所有的注釋文章

文字:

string author()default "aaa";

//aaaaaaa

intarrayattr() default ;

//bbbbbbbb

metaannotation annotationattr() default@metaannotation("");

//ccccccc

classclasstype()default personchiness.class;

正規表示式:(?m)^\s*//.*$

結果:stringauthor() default "aaa";

//aaaaaaa

intarrayattr() default ;

//bbbbbbbb

metaannotation annotationattr() default@metaannotation("");

//ccccccc

classclasstype()default personchiness.class;

警告:有許多正規表示式不支援(?m)

正規表示式總結(三) 位置

一句話 只斷言 判斷 位置,不去匹配,只定位就像 exp exp2 exp3 匹配以exp開始,以exp3結束的exp2部份。比如 b w ing b 匹配以ing結尾的單詞的前面部分 除了ing以外的部分 零寬斷言 何為斷言 斷言某個位置會出現,或不會出現某個模式,但不去匹配這個模式。當斷言不成功...

正規表示式匹配位置速查

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

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

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