排除 NSRegularExpression 中的模式

Exclude pattern in 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("[=10=]")
}

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

我读过有关负正则表达式的内容,returns 除了我们尝试 "avoid" 之外的每个词 "avoid"。

鉴于上面的句子,有没有办法使用负数 regex 来得到与 boldPattern 不匹配的词,所以我会得到 The brown ...,避免**words** ??

编辑

我正在寻找围绕此模式 ((?!\*{2}([\w ]+)\*{2}).*) 的内容,搜索不以 ** word **

开头的单词的内容

一种方法是使用 NSRegularExpressionstringByReplacingMatches 方法。

示例:

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  ...