这是关于Swift中正则表达式的问题。我找到了各种教程,提到了如何进行搜索和匹配,但没有关于分组的内容:
这是一个简单的匹配声明:
if Regex("\\w{4}").test("ABCD") {
println("matches pattern")
}
但如果我想提取第3个字母怎么办:
if Regex("\\w{2}(\\w)\\w").text("REGX") {
print("Found a match with \$1")
}
打印匹配组的正确语法是什么?
或更具体地说 - 如何从2014-10-29T20:44:00
答案 0 :(得分:12)
您可以使用NSRegularExpression
。
var pattern = ".+T(\\d\\d):(\\d\\d).+"
var string = "2014-10-29T20:44:00"
var error: NSError? = nil
var regex = NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.DotMatchesLineSeparators, error: &error)
var result = regex?.stringByReplacingMatchesInString(string, options: nil, range: NSRange(location:0,
length:countElements(string)), withTemplate: "$1$2")
我倾向于在没有正则表达式的情况下这样做:
var charSet = NSCharacterSet(charactersInString: "T:")
var array =
string.componentsSeparatedByCharactersInSet(charSet)
var result2 =
"\(array[1])\(array[2])"
这会将日期时间字符串分解为由T或:分隔的子字符串数组,并且我在返回数组的第二个和第三个元素中得到小时和分钟。