文章以oc為例,正規表示式不分語言,文章中的規則在別的語言也是通用的。
最近有個需求是在字串中匹配出特殊的字串,格式是暱稱
我寫出來的正則如下:
nsstring *regex =@".";
一步一步分析,前半段格式是固定的為:"\"在ios裡需要轉義,所以多乙個\
這樣,同理也就寫出了user_id限制是32位
然後是暱稱,可能是1-10位之間都要匹配上,使用.,其中"."代表所有字元均可
這樣就寫出來了完整的表示式
測試**:
nsstring *str = @"你好瘦豬 瘦豬你好胖猴胖猴";
方法:
nserror *error;
nsregularexpression *regex = [nsregularexpression regularexpressionwithpattern:regex
options:nsregularexpressioncaseinsensitive
error:&error];
// 執行匹配的過程
nsarray *matches = [regex matchesinstring:str
options:nsmatchingreportcompletion
range:nsmakerange(0, [str length])];
for (nstextcheckingresult *match in matches)
結果:
matches裡有兩個元素,列印出來之後是正確的位置。
看到這基本就能寫簡單的正規表示式了。
特殊符號'^'和'$'。他們的作用是分別指出乙個字串的開始和結束,如果從整個字串中找子字串,不用這兩個規則,如果是判斷完整字串是否符合規則,才會用。
匹配任意字元:.
匹配字母和數字: \w
匹配數字:\d
匹配空白字元:\s
「ab*」:表示乙個字串有乙個a後面跟著零個或若干個b(」a」, 「ab」, 「abbb」,……);
「ab?」:表示乙個字串有乙個a後面跟著零個或者乙個b( 」a」, 「ab」);
「a?b+$」:表示在字串的末尾有零個或乙個a跟著乙個或幾個b( 」b」, 「ab」,」bb」,」abb」,……)。
「ab」:表示乙個字串有乙個a跟著4個b(」abbbb」);
「ab」:表示乙個字串有乙個a跟著至少1個b(」ab」,」abb」,」abbb」,……);
「ab」:表示乙個字串有乙個a跟著3到4個b(」abbb」,」abbbb」)。
那麼「*」可以用表示,「+」可以用表示,「?」可以用表示;
「 | 」表示「或」操作,初中畢業的都知道;
「a|b」:表示乙個字串裡有」a」或者」b」;
「(a|bcd)ef」:表示」aef」或」bcdef」;
「(a|b)*c」:表示一串」a」"b」混合的字串後面跟乙個」c」;
方括號」[ ]「表示在括號內的眾多字元要符合的條件,如下:
「[a-d]「:表示乙個字串包含小寫的'a'到'd'中的乙個(相當於」a|b|c|d」或者」[abcd]「);
「^[a-za-z]「:表示乙個以字母開頭的字串;
「[0-9]a」:表示a前有一位的數字;
備註:上面的例子,是使用正規表示式類(nsregularexpression),會返回陣列。
此方法會返回第乙個符合的子串的位置資訊:
獲取完整字串中,符合正規表示式規則的子字串位置:
nsrange range = [str rangeofstring:regex options:nsregularexpressionsearch];
if (range.location != nsnotfound)
判斷完整字串是否符合正規表示式方法,返回bool值:
Ruby正規表示式的乙個例子
ruby基礎教程 programming 第四版 這本書的第十六章正規表示式類中有乙個例子讓人不是那麼容易理解。特此分享一下我的理解。16.5 捕獲 d d 123456 p 1 1 p 2 45 p 3 6 此例子中的p 2 45結果讓人有點難以理解,因為大家都會認為結果應該是23才對,其實不然。...
乙個正規表示式的例子
需求 通過.net的正則 上面3個都得到 aa 並對語句稍微講解一下。謝謝。http w 這個是我寫的。不知道怎麼加上或者匹配www 還有?這個什麼意思查不到。解決 i 匹配模式,表示忽略大小寫,在.net中等價於在後面加regexoptions.ignorecase引數 http www 肯定逆序...
僅1個例子輕鬆學習正規表示式
例子 這是乙個用來匹配url的正規表示式,分組獲取不同部分的資訊 var parse url a za z 0 9.a za z d var url var result parse url.exec url var names url scheme slash host port path que...