Swift 提取 Regex 匹配含代碼

    Swift 提取 Regex 匹配

    正則表達(dá)式(Regex)是一種用來匹配字符串模式的工具,它是編程中常用的工具之一。愛掏網(wǎng) - it200.com在Swift中,我們可以使用NSRegularExpression類來處理正則表達(dá)式的匹配。愛掏網(wǎng) - it200.com

    NSRegularExpression是一個(gè)基于PCRE(Perl兼容正則表達(dá)式)引擎的Cocoa框架中的一個(gè)類,它可以用來處理正則表達(dá)式的匹配。愛掏網(wǎng) - it200.com

    以下是一個(gè)示例代碼,它演示了如何使用NSRegularExpression來進(jìn)行正則表達(dá)式的匹配:

    let string = "Hello Swift Regex"
    let pattern = "Swift"
    
    do {
        let regex = try NSRegularExpression(pattern: pattern)
        let results = regex.matches(in: string, range: NSRange(string.startIndex..., in: string))
        for match in results {
            print("Matched range: \(match.range)")
            let matchedString = String(string[Range(match.range, in: string)!])
            print("Matched string: \(matchedString)")
        }
    } catch let error {
        print("Invalid regular expression: \(error.localizedDescription)")
    }
    

    在上述代碼中,首先定義了一個(gè)字符串,然后定義了一個(gè)正則表達(dá)式Swift愛掏網(wǎng) - it200.com接下來,我們利用NSRegularExpression類以及上述正則表達(dá)式來進(jìn)行匹配。愛掏網(wǎng) - it200.com

    代碼塊中第一步是實(shí)例化正則表達(dá)式,它的輸入是我們定義的正則表達(dá)式。愛掏網(wǎng) - it200.com在這個(gè)例子中,我們使用了try關(guān)鍵詞,這是因?yàn)镹SRegularExpression的初始化代碼可能會(huì)拋出異常。愛掏網(wǎng) - it200.com輸入?yún)?shù)中,我們使用了正則表達(dá)式的字符串形式。愛掏網(wǎng) - it200.com后面兩個(gè)參數(shù)分別是要搜索的字符串及其范圍。愛掏網(wǎng) - it200.com

    接下來,我們使用matches(in:range:)方法來獲取匹配結(jié)果,這個(gè)方法返回的是一個(gè)NSTextCheckingResult類型的數(shù)組。愛掏網(wǎng) - it200.com我們?cè)?code>for循環(huán)中遍歷這個(gè)數(shù)組,從而逐個(gè)打印出每一個(gè)匹配項(xiàng)的位置以及具體匹配的字符串。愛掏網(wǎng) - it200.com

    提取匹配結(jié)果

    在上述示例代碼中,我們利用NSRegularExpression類對(duì)字符串模式進(jìn)行了匹配,但是僅僅得到了匹配結(jié)果的位置信息,并未提取出具體的匹配結(jié)果。愛掏網(wǎng) - it200.com接下來我們演示如何提取出匹配結(jié)果。愛掏網(wǎng) - it200.com

    let string = "Hello Swift Regex"
    let pattern = "(Sw)(\\S*)"
    
    do {
        let regex = try NSRegularExpression(pattern: pattern)
        let results = regex.matches(in: string, range: NSRange(string.startIndex..., in: string))
        for match in results {
            let matchedString = String(string[Range(match.range, in: string)!])
            let group1Range = Range(match.range(at: 1), in: string)!
            let group2Range = Range(match.range(at: 2), in: string)!
            let group1String = String(string[group1Range])
            let group2String = String(string[group2Range])
            print("Matched string: \(matchedString)")
            print("Group 1 string: \(group1String)")
            print("Group 2 string: \(group2String)")
        }
    } catch let error {
        print("Invalid regular expression: \(error.localizedDescription)")
    }
    

    在上面代碼的正則表達(dá)式"(Sw)(\\S*)"中,括號(hào)將表達(dá)式的內(nèi)容分成了兩個(gè)組:第一個(gè)組是"Sw",第二個(gè)組是"ift Regex"愛掏網(wǎng) - it200.com

    我們使用了matches(in:range:)方法來獲取匹配結(jié)果,并使用NSTextCheckingResult對(duì)象的range(at:)方法來提取出組的位置信息。愛掏網(wǎng) - it200.com我們還定義了兩個(gè)字符串group1Stringgroup2String分別來表示分組1和分組2的具體匹配字符串,最后在循環(huán)中打印了所有的匹配結(jié)果。愛掏網(wǎng) - it200.com

    結(jié)論

    在Swift中,我們可以使用NSRegularExpression類來進(jìn)行正則表達(dá)式的匹配及結(jié)果提取。愛掏網(wǎng) - it200.com使用正則表達(dá)式需要熟練掌握匹配規(guī)則語法,以及掌握如何使用API進(jìn)行匹配結(jié)果的處理。愛掏網(wǎng) - it200.com通過應(yīng)用上述示例代碼,開發(fā)者可以方便將匹配結(jié)果提取出來進(jìn)行后續(xù)處理。愛掏網(wǎng) - it200.com

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論0 條評(píng)論)
    暫無評(píng)論

    返回頂部

    主站蜘蛛池模板: 乱人伦一区二区三区| 波霸影院一区二区| 成人精品视频一区二区三区 | 亚洲熟妇无码一区二区三区导航| 亚洲一区精品视频在线| 国产免费一区二区三区免费视频| 无码日本电影一区二区网站| 精品亚洲一区二区三区在线播放| 成人精品一区二区户外勾搭野战| 香蕉免费看一区二区三区| 无码精品蜜桃一区二区三区WW| 中文字幕日韩精品一区二区三区| 中文字幕一区二区三区永久| 无码AⅤ精品一区二区三区| 波多野结衣一区二区三区高清av | 国产精品区一区二区三在线播放 | 国产香蕉一区二区精品视频| 精品无码一区二区三区爱欲| 国产美女精品一区二区三区| 国产亚洲情侣一区二区无码AV| 国产成人一区二区动漫精品| 精品国产一区二区三区在线| 国产手机精品一区二区| 在线观看国产一区二三区| 亚洲a∨无码一区二区| 在线观看精品一区| 国产在线精品一区二区在线看| 国产嫖妓一区二区三区无码| 一区二区三区亚洲视频| 国产在线精品一区二区夜色| 日本一区二区免费看| 老熟妇仑乱一区二区视頻| 日韩在线一区二区| 国产在线一区二区杨幂| 国产精品亚洲不卡一区二区三区| 国产高清精品一区| 亚洲AV无码一区东京热久久| 日韩精品一区二区三区中文精品 | 亚洲欧洲一区二区三区| 亚洲狠狠久久综合一区77777| 人妻AV一区二区三区精品|