在NSRegularExpression中排除模式

时间:2018-05-14 09:47:06

标签: ios swift nsregularexpression

想象一下这句话:

The **quick** brown **fox** ...

如果我运行以下regex

let boldPattern = "\\*{2}([\\w ]+)\\*{2}"

let boldRegex = try NSRegularExpression(pattern: boldPattern)

let str = "The **quick** brown **fox** ..."

let results = regex.matches(in: str, range: NSRange(str.startIndex..., in: str))

results.forEach {
    print("$0")
}

我能够获得**之间的所有单词。

我读过有关负正则表达式的内容,它会返回除了我们试图“避免”之外的所有单词。

鉴于上述句子,有没有办法使用否定regex来获取与boldPattern不匹配的字词,所以我会得到The brown ...,避免**words** 1}} ??

修改

我正在寻找这种模式((?!\\*{2}([\\w ]+)\\*{2}).*)的东西,搜索不以** word **开头的单词

1 个答案:

答案 0 :(得分:1)

一种方法是使用NSRegularExpression stringByReplacingMatches方法。

示例:

let boldPattern = "\\*{2}([\\w ]+)\\*{2}"
let boldRegex = try NSRegularExpression(pattern: boldPattern)
let str = "The **quick** brown **fox** ..."

let unmatchedString = boldRegex.stringByReplacingMatches(in: str, options: [], range: NSMakeRange(0, str.count), withTemplate: "")
print(unmatchedString)
// prints: The  brown  ...