匹配Swift中的独立子串

时间:2015-01-29 11:13:34

标签: ios regex string swift nsstring

我想检查一个字符串是否是另一个字符串的一部分,但只是作为一个独立的术语,而不是另一个单词的一部分。我在斯威夫特工作。

E.g。这是我希望检查" mon"

的内容
  • "星期一"
  • "周一"
  • "星期一"
  • "周一"
  • "星期一"
  • "怪物"
  • " Hormons"

这是一个很好的方法吗? (在 containsString 和正则表达式之类的NSString函数之间来回传递)

3 个答案:

答案 0 :(得分:3)

使用不区分大小写修饰符的单词边界。

"(?i)\\bmon\\b"

DEMO

答案 1 :(得分:1)

let regex = NSRegularExpression(pattern: "\\bmon\\b", options: NSRegularExpressionOptions.CaseInsensitive, error: nil)!

func isMatch(str: String) -> Bool {
    return regex.firstMatchInString(str, options: nil, range: NSRange(location: 0, length: str.utf16Count)) != Optional.None
}

["Mon", "mon", " Mon", " Mon " , "Monday", "Monster", "Hormons"].map(isMatch)

// yields [true, true, true, true, false, false, false]

答案 2 :(得分:0)

以下适用于Swift 2.

let regex = try! NSRegularExpression(pattern: "\\bmon\\b", options: NSRegularExpressionOptions.CaseInsensitive)



func isMatch(str: String) -> Bool {
  return regex.firstMatchInString(str, options: .ReportCompletion ,  range: NSRange(location: 0, length: str.characters.count)) != Optional.None
}

["Mon", "mon", " Mon", " Mon " , "Monday", "Hormons"].map(isMatch)

// Yields [true, true, true, true, false, false]