限定符\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.從結...