2016-05-21 4 views
1

Я работаю над небольшим приложением iOS и застрял в создании шаблона с использованием класса NSRegularExpression. Мне нужен шаблон, который я могу использовать, чтобы искать и сопоставлять специальное слово и заменять его позже, но мне нужно исключить это слово из соответствия, если оно уже было заменено этим совпадением. Поэтому, если пользователь обрабатывает текст несколько раз, замена идет только один раз.Соответствие NSRegularExpression и замена с помощью exclude

Пример:

Мне нужно найти и заменить все "yes" в любой текст с "probably yes". Но мне нужно, чтобы исключить замену "yes" в "probably yes" в случае, если пользователь обрабатывает текст еще раз, так что не будет выглядеть "probably probably yes"

NSRegularExpression *regexYesReplace = [NSRegularExpression regularExpressionWithPattern:@"some pattern" options:0 error:&error]; 
NSString *replacementStringYesReplace = @"probably yes"; 
replacedText = [regexYesReplace stringByReplacingMatchesInString:afterText options:options range:range withTemplate:replacementStringYesReplace]; 

Я пытался реализовать шаблон от этого вопроса и фиксированный синтаксис для NSRegularExpression но Ждут» t выработать.

Regex replace text but exclude when text is between specific tag

Может быть кто-то с той же проблемой. Заранее спасибо

+0

Простого решения: Генерирует случайный заполнитель, который не является частью строки (например, 'F4E67O', создать новую! пока он не будет включен). Замените все 'вероятно, да' заполнителем, затем все' да' и заполнители с 'вероятно, да'. –

ответ

0

Вы можете использовать negative look-behind

(?<!probably)yes 

Regex Demo

+0

Он отлично работает. Спасибо! – Mike