Исключить шаблон в NSRegularExpression - PullRequest
0 голосов
/ 14 мая 2018

Представьте себе следующее предложение:

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** ??

Edit

Я ищу что-то вокруг этого шаблона ((?!\\*{2}([\\w ]+)\\*{2}).*), что-то, что ищет слова, которые не начинаются с ** word **

1 Ответ

0 голосов
/ 14 мая 2018

Один из способов сделать это - использовать метод 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  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...