2017-01-22 5 views
0

Я хочу, чтобы соответствовать несколько слов в регулярном выражении, за исключением некоторых других:regex: Как совместить эти слова, кроме этих слов?

пример: все слова, которые содержат Straat, Laan, Баан

(straat|laan|baan) 

Но не

(overslaan|bestraat|rubaan) 

например: mystraat bolaan overslaan boobaan rubaan

должно соответствовать

mystraat bolaan boobaan

+1

Это был дан ответ несколько раз. Вы можете использовать прогнозные утверждения. См. Http://stackoverflow.com/questions/611883/regex-how-to-match-everything-except-a-particular-pattern – fjc

+2

Если вы хотите совместить целые слова, а не только части, что-то вроде этого должно работать: https : //regex101.com/r/LLE1XQ/2 – sinisake

ответ

-2

просто добавить^в передней части регулярных выражений и $ до конца проверить код ниже:

/^[straat|laan|baan]$/ 
1

Это немного сложно, но может быть сделано с отрицательным просмотром назад.

попробовать что-то вроде этого:

$goodString = "coolbaan"; 
$badString = "rubaan"; 

$stringToTest = $goodString; 

$regexPattern = '/(.*?)((?<!overs|ru|be)(straat|laan|baan))/'; 

preg_match($regexPattern, $stringToTest, $matches); 
if ($matches) { 
    // $matches[1] will be the prefix - e.g. ru 
    // $matches[2] will be the suffix e.g. baan 
    // $result will be 'rubaan' 
    $result = "{$matches[1]}{$matches[2]}"; 
} else { 
    $result = 'No Match!'; 
} 
echo $result; 

 Смежные вопросы

  • Нет связанных вопросов^_^