簡單了解:
正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
正則表達式是由普通字符(例如:字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
簡單示例(說明基礎語法)
- (BOOL)checkTheTestString:(NSString *)testString {
NSString *number=@"^[0-9]+$";
NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number];
return [numberPre evaluateWithObject: testString];
}
-
首先我們撇開語法,看看一個正則表達式里包含了一些什么
-
"^"和"$"分別指出了一個字符串的開始和結束,如:
"^YJZ.*":表示所有以"YJZ"開頭的字符串("YJZ001", "YJZ is a coder", "YJZ's Blog"等等, 其中"."表示任意字符,"*"在后面會提到) ".*a single dog$":表示所有以"a single dog"結尾的字符字符串("I'm a single dog"等等) "^iPhone$":表示開始和結束都是"iPhone"的字符串,這是唯一的,沒有別的結果,去掉兩旁的符號得到的結果一樣
"+"、""和"?"這三個符號屬于一類,它們表示一個或N個字符重復出現的次數,下面我用數學上的區間說明
"WoW+":表示一個字符串"Wo"后面跟著至少一個"W"([1, +∞]),
("WoW", "WoWWWWW")
"WoW":表示一個字符串"Wo"后面跟著零個或若干個"W"([0, +∞]),
("Wo", "WoW", "WoWWWW")
"WoW?":表示一個字符串"Wo"后面跟著零個或者一個b[0, 1],
("Wo", "WoW",只有這兩種結果)-
"+", "", "?"可以用"{}"替代, "{}"表示一個字符串重復的具體范圍
"+":可以用"{1,}"表示;
"":可以用"{0,}"表示;
"?":可以用"{0,1}"表示;"WoW{3}":表示一個字符串"Wo"后跟著4個"W"("WoWWW") "WoW{1,}":表示一個字符串"Wo"后面跟著至少一個"W"([1, +∞]), ("WoW", "WoWWWWW") "WoW{3,4}":表示一個字符串@"Wo"跟著3到4個"W", ("WoWWW", "WoWWWW") 注意:一個"{}"內可以沒有上限,但不能沒有下限, 括號內不允許有空格,不然程序會崩潰 崩潰原因如下: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't do regex matching, reason: Can't open pattern U_REGEX_BAD_INTERVAL (string WoW123, pattern WoW{3, 4}, case 0, canon 0)'
-
"{}"中有空格時會使程序崩潰,報錯如圖.png
* [0-9]表示一個字符串包含0到9中的一個
"[a-d]":表示一個字符串包含小寫的'a'到'd'中的一個(相當于"a|b|c|d"或者"[abcd]");
"^[a-zA-Z].*":表示一個以字母開頭的字符串;
"[0-9]a":表示a前有一位的數字;
".*[a-zA-Z0-9]$":表示一個字符串以一個字母或數字結束。
附上該章Demo網址:https://github.com/StruggleForever/RegularExpression-1
今天就學到這兒了,扛不住了,睡覺去~