Вы можете обнаружить целые слова с \b
границей слова, а также, вы можете получить дополнительный пробел после этих слов с \s*
(1+ пробелами). Затем мы можем удостовериться, что никаких ведущих пробелов не осталось с .stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
.
Также обратите внимание, что строки в Swift являются C строке (поддержка управляющих последовательностями) и так как регулярные выражения специальных метасимволы должны быть экранированы с буквальными обратным косыми чертами, вы должны фактически удвоить слеш шаблона (т.е. \s
->"\\s"
) ,
Вот Swift код 2.1 Образец:
var s = "a match a"
var out_s = ""
if let regex = try? NSRegularExpression(pattern: "\\ba\\b\\s*", options: .CaseInsensitive) {
out_s = regex.stringByReplacingMatchesInString(s, options: .WithTransparentBounds, range: NSMakeRange(0, s.characters.count), withTemplate: "")
print("\""+out_s.stringByTrimmingCharactersInSet(
NSCharacterSet.whitespaceAndNewlineCharacterSet()
)+"\"")
}
Он печатает "match"
.
Обратите внимание, что options: .CaseInsensitive
будет выполнять нечувствительность к регистру, используйте options: []
, чтобы сделать регистр поиска чувствительным.
Теперь, если у вас есть список детерминативов, используйте чередование:
"\\b(?:an?|the)\\b\\s*"
Это выражение будет соответствовать a
, an
или the
следует с 0+ пробелов.
Каков ваш ожидаемый результат? –
результат должен быть: '' 'match''' – Arti
Если их движок поддерживает _assertions_, используйте регулярное выражение, подобное этому (? sln