Regex 使用^ 符號排除特定字元 - 菜鳥工程師肉豬

文章推薦指數: 80 %
投票人數:10人

在正規表示式可用 ^ (caret)符號來排除後接的字元。

^ 是正規表示式的metacharacter(metacharacter的中文翻譯很多,例如元字符,中繼字符,特用 ... AdSense 網頁 首頁 關於我 2017/8/15 Regex使用^符號排除特定字元 在正規表示式可用^(caret)符號來排除後接的字元。

^是正規表示式的metacharacter(metacharacter的中文翻譯很多,例如元字符,中繼字符,特用字符,特殊自元,詮譯字元,中介字元等) 注意^要包在方括弧中並緊接於左方刮弧後時才代表排除,例如[^...],否則表示字串的起點。

觀察以下... Stringstr=newString("hello"); Stringregex1="^hello"; Patternp1=Pattern.compile(regex1); System.out.println(p1.matcher(str).matches());//true Stringregex2="[^hello]"; Patternp2=Pattern.compile(regex2); System.out.println(p2.matcher(str).matches());//false System.out.println(p2.matcher("h").matches());//false雖然是1個字,但為h System.out.println(p2.matcher("he").matches());//false超過1個字,且2字皆為h,e,l,o中的字元 System.out.println(p2.matcher("e").matches());//false雖然是1個字,但為e System.out.println(p2.matcher("ac").matches());//false雖然a,c皆不為h,e,l,o中的任一字元,但超過2個字 System.out.println(p2.matcher("b").matches());//true1個字,且不為h,e,l,o中的任一字元 上面範例中的第一個Patternp1檢查字串("hello")是否以"hello"開頭,所以結果為true。

p2檢查字串是否只有一個字且不為h,e,l,l,o中的任一字元,所以為false。

特別注意這邊的匹配方法是matches(),不是find(),兩個方法的差異請參考Regexmatches()和find()的差異 ^精確的說是匹配被排除字元以外的字元,請看以下... Stringstr1=newString("jerry"); Stringstr2=newString("john"); Stringstr3=newString("jajo"); Stringregex="j[^o]"; Patternp=Pattern.compile(regex); System.out.println(p.matcher(str1).find());//true System.out.println(p.matcher(str2).find());//false System.out.println(p.matcher(str3).find());//true 上面的regex的意思是,找出字串中有"j"及後面緊接除了"o"之外的任何字元。

"jeff"的"je"符合條件,所以為true。

"john"的第一個字為"j",但第二個字為"o",因為條件是o以外的任意字元,所以不批配為false。

"jajo"的"ja"符合條件,雖然後面的"jo"不符合條件,但find()只要有找到一個符合就會回傳true。

菜鳥工程師肉豬 若要檢查全部字串中是否不含某特定字串,請看以下 Stringstr1=newString("helloworld"); Stringstr2=newString("worldhello"); Stringstr3=newString("theworldwryyyy"); Stringregex="^(?!.*hello)"; Patternp=Pattern.compile(regex); System.out.println(p.matcher(str1).find());//false System.out.println(p.matcher(str2).find());//false System.out.println(p.matcher(str3).find());//true 被檢查字串中如有出現"hello",則回傳false 如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。

標籤: regex 沒有留言: 張貼留言 較新的文章 較舊的文章 首頁 訂閱: 張貼留言(Atom) AdSense 搜尋此網誌 總網頁瀏覽量



請為這篇文章評分?