Regex 使用^ 符號排除特定字元 - 菜鳥工程師肉豬
文章推薦指數: 80 %
在正規表示式可用 ^ (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
搜尋此網誌
總網頁瀏覽量
延伸文章資訊
- 1[Regex] 不包含定位詞的向前或向後選取
每修改它一次其實就是 new 一個已修改過的object,這樣的做法在記憶體及效能上來說不太優. 所以今天要來講如何用正則表達式(正規表示法),乾脆俐落地 ...
- 2Regex 使用^ 符號排除特定字元 - 菜鳥工程師肉豬
在正規表示式可用 ^ (caret)符號來排除後接的字元。 ^ 是正規表示式的metacharacter(metacharacter的中文翻譯很多,例如元字符,中繼字符,特用 ...
- 3Day 12: 正規表示式(Regular Expression) - iT 邦幫忙
表示式 var pattern = new RegExp(s$) or var pattern =/s$/ 代表著以s結尾的字串都匹配。 ... (?=p), 要求後面的字元必須匹配p(回傳時不...
- 4正規表達式- JavaScript - MDN Web Docs
使用正規表達式字面值(regular expression literal),包含兩個 / 字元之間 ... 在字符串中的"Grab crab"('ab c') 中將不會被匹配,因為它不包含任何...
- 5[料理佳餚] Regular Expression(正則表達式)的比對「不包含」