iOS利用正則表達(dá)式得到所有符合條件的字符串所處的范圍

還是上次的@效果,要從一串字符串中匹配出符合條件(以@開頭且為車牌號)的字符串切蟋。
首先根據(jù)條件寫個正則:

NSString *carNumberPattern = @"[@]{1}[\u4E00-\u9FA5]{1}[A-Z]{1}[A-Z_0-9]{5}";

然后就用到了iOS自帶的NSRegularExpression這個類去解析這個正則表達(dá)式,類方法快速創(chuàng)建對象:

+ (nullable NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error;

第一個參數(shù)不用說就是要解析的正則表達(dá)式颊咬,第二個參數(shù)作用如下:

typedef NS_OPTIONS(NSUInteger, NSRegularExpressionOptions) {  
NSRegularExpressionCaseInsensitive             = 1 << 0, //不區(qū)分字母大小寫的模式   
NSRegularExpressionAllowCommentsAndWhitespace  = 1 << 1, //忽略掉正則表達(dá)式中的空格和#號之后的字符   
NSRegularExpressionIgnoreMetacharacters        = 1 << 2, //將正則表達(dá)式整體作為字符串處理   
NSRegularExpressionDotMatchesLineSeparators    = 1 << 3, //允許.匹配任何字符肪笋,包括換行符     
NSRegularExpressionAnchorsMatchLines           = 1 << 4, //允許^和$符號匹配行的開頭和結(jié)尾   
NSRegularExpressionUseUnixLineSeparators       = 1 << 5, //設(shè)置\n為唯一的行分隔符,否則所有的都有效呜袁。   
NSRegularExpressionUseUnicodeWordBoundaries    = 1 << 6 //使用Unicode TR#29標(biāo)準(zhǔn)作為詞的邊界敌买,否則所有傳統(tǒng)正則表達(dá)式的詞邊界都有效
};

因?yàn)檐嚺铺栔袥]有小寫字母,所以操作選項(xiàng)不能選第一個:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:carNumberPattern options:NSRegularExpressionDotMatchesLineSeparators error:&error ];

這個對象有下面幾個方法可以獲取到符合條件的信息:

- (NSArray<NSTextCheckingResult *> *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回所有匹配結(jié)果的數(shù)組
- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回所有匹配結(jié)果的個數(shù)
- (nullable NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回第一個匹配結(jié)果
- (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;//返回第一個匹配結(jié)果的range

因?yàn)榭赡苡卸鄠€@阶界,所以用第一個方法虹钮。這個方法返回了一個裝有NSTextCheckingResult對象的數(shù)組,NSTextCheckingResult對象有一個range屬性膘融,記錄了它所處的范圍芙粱。注:這個中的元素順序是倒序排列的,例如第一個符合條件的結(jié)果放在了數(shù)組的最末尾氧映〈号希可以在得到range之后按location進(jìn)行一次升序排列。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岛都,一起剝皮案震驚了整個濱河市拐迁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疗绣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铺韧,死亡現(xiàn)場離奇詭異多矮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哈打,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門塔逃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人料仗,你說我怎么就攤上這事湾盗。” “怎么了立轧?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵格粪,是天一觀的道長。 經(jīng)常有香客問我氛改,道長帐萎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任胜卤,我火速辦了婚禮疆导,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葛躏。我一直安慰自己澈段,他們只是感情好悠菜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著败富,像睡著了一般悔醋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囤耳,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天篙顺,我揣著相機(jī)與錄音,去河邊找鬼充择。 笑死德玫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椎麦。 我是一名探鬼主播宰僧,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼观挎!你這毒婦竟也來了琴儿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤嘁捷,失蹤者是張志新(化名)和其女友劉穎造成,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雄嚣,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晒屎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缓升。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼓鲁。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖港谊,靈堂內(nèi)的尸體忽然破棺而出骇吭,到底是詐尸還是另有隱情,我是刑警寧澤歧寺,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布燥狰,位于F島的核電站,受9級特大地震影響斜筐,放射性物質(zhì)發(fā)生泄漏碾局。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一奴艾、第九天 我趴在偏房一處隱蔽的房頂上張望净当。 院中可真熱鬧,春花似錦、人聲如沸像啼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忽冻。三九已至真朗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間僧诚,已是汗流浹背遮婶。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留湖笨,地道東北人旗扑。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像慈省,于是被迫代替她去往敵國和親臀防。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,219評論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法边败,類相關(guān)的語法袱衷,內(nèi)部類的語法,繼承相關(guān)的語法笑窜,異常的語法致燥,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 我遇到過這么一個她荷腊,她不是很漂亮但讓人看著很舒服艳悔。她不淑女,有時(shí)會滿嘴臟話卻有時(shí)又傲嬌的讓人心疼女仰。不會關(guān)心人或者...
    寒小閱讀 5,231評論 0 4
  • 棧是什么猜年? 任務(wù)棧Task,是用來放置activity的地方疾忍,即執(zhí)行特定任務(wù)時(shí)與用戶交互的一系列activity乔外,...
    青春_放肆了驕傲閱讀 362評論 1 1
  • 活潑的小雨點(diǎn),怎么能不小心跳躍到車窗上一罩,被雨刷器無情的刮掉杨幼! 喜歡秋天的小雨,就這樣一直淅淅瀝瀝的,不急躁差购,不張揚(yáng)...
    宋振宇閱讀 275評論 0 0