2014-01-16 1 views
0

Я очень новичок в regexp и попытался создать шаблон для NSRegularExpression. Я хочу извлечь в любом месте в заданной строке все полные слова, соответствующие ключевому слову, но только если это ключевое слово не сопровождается одной цитатой.Regex, чтобы исключить слова, за которыми следует одна цитата

За «законопроект» ключевое слово, мне нужно извлечь в моей строке любое вхождение

bill 
bill, 
bill! 

but not 

bill's 
billy 
billboard 

Спасибо за вашу помощь!

ответ

1

Следующее должно сделать трюк.

NSString *pattern = @"\\bbill\\b(?!')"; 

Регулярное выражение:

\b    the boundary between a word char (\w) and not a word char 
bill   'bill' 
\b    the boundary between a word char (\w) and not a word char 
(?!   look ahead to see if there is not: 
    '   '\'' 
)    end of look-ahead 

Однако место, куда вы ключевое слово данных или переменной в шаблоне.

\\bKEYWORD\\b(?!') 

См Live demo

+0

Спасибо большое, это соответствует тому, что мне нужно. Я пробовал это раньше в нескольких местах, и это не сработало, так как у меня был плохой отформатированный шаблон в одном экземпляре ... Он также работает, чтобы извлечь s из счета ;-) Еще раз спасибо! – Denis

+0

И как это могло быть из этого списка: Это (например, цитата, сопровождаемая одной или несколькими буквами) Это (например, цитата, за которой следует знак препинания) Это (например, цитата, сопровождаемая пробелом) Это .. чтобы извлечь выделение: Это (замедленное) Это (знак препинания удален) Это (следующее пространство не удалено) Это (без изменений) - – Denis