想要把:
let personIdExample = "user-ae96618f-3a5c-48a8-a799-9944a4e76ed9" let groupIdExample = "group-7f1ad5cd-8f18-4c5e-9fe4-604c3e5b1ab8" let topicIdExample = "topic-a11838ca-a741-4d2d-ad5c-477c87400ad0" let teamIdExample = "team-d655d10c-a0dc-46f6-804d-c88866538036" let contactIdExample = "contact-1be1e474-388e-4b30-9030-40add6348cd4"
去完全匹配,以便于获得对应的:
对应的Id的类型
swift regular expression match
NSTextCheckingResult Class Reference
NSRegularExpression Class Reference
ios – Swift extract regex matches – Stack Overflow

想要提取出:
user-ae96618f-3a5c-48a8-a799-9944a4e76ed9
中的各个子项sub group:
user
ae96618f
3a5c
48a8
a799
9944a4e76ed9
但是却没法活的对应的C#中的那种sub group
即 每个子的匹配项
swift regular expression match sub group
Swift regex – How to extract a matching group – Stack Overflow
regex – How to group search regular expressions using swift – Stack Overflow
Swift regex – How to extract a matching group – www.scriptscoop.net
SwiftRegex/SwiftRegex.swift at master · johnno1962/SwiftRegex · GitHub
Swift regular expressions — Swift Studies
Swift extension for Native String class to support Regex match and Regex replace. GitHub
Regular Expression – Swift Must Know Tips
Clean Regular Expressions In Swift
NSRegularExpression Tutorial: Getting Started – Ray Wenderlich
NSRegularExpression: How to match regular expressions in strings – Swift 2 example code
ios – Swift regex: does a string match a pattern? – Stack Overflow
目前是,用了下面的代码:
//: Playground - noun: a place where people can play
import UIKit
let personIdExample = "user-ae96618f-3a5c-48a8-a799-9944a4e76ed9"
let groupIdExample = "group-7f1ad5cd-8f18-4c5e-9fe4-604c3e5b1ab8"
let topicIdExample = "topic-a11838ca-a741-4d2d-ad5c-477c87400ad0"
let teamIdExample = "team-d655d10c-a0dc-46f6-804d-c88866538036"
let contactIdExample = "contact-1be1e474-388e-4b30-9030-40add6348cd4"
do {
var idTypePattern = ""
idTypePattern = "^[a-zA-Z]{4,7}(-\\w{4,20}){5}$"
idTypePattern = "^([a-zA-Z]{4,7})-"
idTypePattern = "^([a-zA-Z]{4,7})(-\\w{4,20}){5}$"
idTypePattern = "^([a-zA-Z]{4,7})(-\\w{4,20})"
let idRegExp:NSRegularExpression = try NSRegularExpression(pattern: idTypePattern, options: NSRegularExpressionOptions.CaseInsensitive)
print("idRegExp=\(idRegExp)")
let idMatchs:[NSTextCheckingResult] = idRegExp.matchesInString(personIdExample, options: [], range: NSRange(location: 0, length: personIdExample.characters.count))
print("idMatchs=\(idMatchs)")
for (idx, curIdMatch) in idMatchs.enumerate() {
print("[\(idx)] \(curIdMatch)")
}
if let idMatchFirst = idMatchs.first {
print("idMatchFirst=\(idMatchFirst)")
let idTypeRange = idMatchFirst.range
print("idTypeRange=\(idTypeRange)")
}
}catch let error {
}
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex, options: [])
let nsString = text as NSString
let results = regex.matchesInString(text,
options: [], range: NSMakeRange(0, nsString.length))
return results.map { nsString.substringWithRange($0.range)}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
return []
}
}
let matches = matchesForRegexInText("idTypePattern", text: personIdExample)
print(matches)
还是没有得到想要的结果:
以后有空再去弄吧。。
总之,和Python,C#,甚至Java比,
Swift中对于正则表达式的支持,太你妹的弱智了:
连基本的sub group都不支持。。。
去换用: