正则表达式未在Swift中返回预期结果

时间:2016-04-19 22:22:15

标签: regex string swift

我有以下内容,它在另一个字符串中获取字符串的匹配:

let a : String = "https://www.example.com"
let b = a as NSString
let regex : NSRegularExpression = try! NSRegularExpression(pattern: "(\\.(.*)\\. || /(.*)\\.)", options: .CaseInsensitive)
let text = regex.matchesInString(a, options: [], range: NSMakeRange(0, b.length))
return text.map {b.substringWithRange($0.range)}[0].stringByReplacingOccurrencesOfString(".", withString: "")

目标是创建一个更易读的域名版本。例如 - https://www.example.com应该变为:example

但是这会返回一个空字符串。

我的正则表达式有问题吗?

1 个答案:

答案 0 :(得分:1)

你的正则表达式模式中有空格。

您正在使用||。这并不意味着正则表达式中的OR。

你正在筑巢。

我修改了你的正则表达式,它正在做你期望的事情。

secondStoryboard

输出:

let a : String = "https://www.example.com"
let b = a as NSString
let regex : NSRegularExpression = try! NSRegularExpression(pattern: "\\.(.*)\\.", options: .CaseInsensitive)
let text = regex.matchesInString(a, options: [], range: NSMakeRange(0, b.length))
return text.map {b.substringWithRange($0.range)}[0].stringByReplacingOccurrencesOfString(".", withString: "")