Swift 正则表达式匹配

Posted

技术标签:

【中文标题】Swift 正则表达式匹配【英文标题】:Swift Regex Matching 【发布时间】:2015-02-28 01:16:31 【问题描述】:

模式不是问题

我有一个正则表达式字符串

var elementRegex = "([A-Z][a-z]?)(\\d*)?"

我想将其与文本匹配。示例将其与Al3Br3 匹配,我希望结果是

Al,3Br,3

我该怎么做?

【问题讨论】:

***.com/questions/25071444/regex-in-swift 【参考方案1】:

这不是一个 Swift 特定的问题,而是一个 Cocoa 问题。您没有指定您是为 OS X 还是 ios 开发,但两者都通过 NSRegularExpressionNSString 提供出色的正则表达式支持。

以下是它们在 Swift 中的用法示例:

let s: NSString = "Al3Br3"
if let r = NSRegularExpression(pattern: "([A-Z][a-z]?)(\\d*)?", options: NSRegularExpressionOptions.allZeros, error: nil) 
    for match in r.matchesInString(s, options: NSMatchingOptions.allZeros, range: NSMakeRange(0, s.length)) as [NSTextCheckingResult] 
        println("Match:")
        for i in 0..<match.numberOfRanges 
            println("\(i): \(s.substringWithRange(match.rangeAtIndex(i)))")
        
    

这会导致:

Match:
0: Al3
1: Al
2: 3
Match:
0: Br3
1: Br
2: 3

【讨论】:

以上是关于Swift 正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章

Swift 提取正则表达式匹配

Swift 提取正则表达式匹配

swift Swift提取正则表达式匹配

无法让 Swift 中的正则表达式匹配“不包含”

Swift提取正则表达式匹配

如何检查我的字符串是不是与正则表达式匹配 - Swift 3 [重复]