Я получаю строки вида: DBL + 2EXT.BED + 1CHD
Есть несколько вариантов обозначений: DBL, EXT, CHD, TRPL, AD, ADD, но в любой момент может прийти что-то новое. Смысл в том, чтобы знать, что в строке что-то не из словаря.
Например:
dictionary = array('DBL', 'EXT', 'CHD', 'TRPL', 'ADD', 'AD');
string = DTRPL + EXT.BED
В этом случае DTRPL - что-то новое, регулярное выражение должно это понять.
Пытаюсь построить выражение на отрицаниях, но [^EXT] отрицает любой символ из группы, а ^EXT ищет 'EXT' в начале строки. Кто-нибудь может с этим помочь?
1. DimaShin - 02 Сентября, 2014 - 11:23:51 - перейти к сообщению
2. Мелкий - 02 Сентября, 2014 - 11:44:32 - перейти к сообщению
Почему это надо делать регуляркой?
Вы наверняка дальше что-то будете делать с этим описанием гостиниц, там и проверяйте, знаете вы такое размещение или нет.
Если всё-таки ничего не делаете - сделайте preg_match_all по простейшему [a-z]+ и проитерируйте результат на in_array - это будет проще сопровождать и удобнее что-то делать при появлении неизвестного элемента.
Вы наверняка дальше что-то будете делать с этим описанием гостиниц, там и проверяйте, знаете вы такое размещение или нет.
Если всё-таки ничего не делаете - сделайте preg_match_all по простейшему [a-z]+ и проитерируйте результат на in_array - это будет проще сопровождать и удобнее что-то делать при появлении неизвестного элемента.
3. dcc0 - 02 Сентября, 2014 - 17:54:15 - перейти к сообщению
Словарь у вас в массиве. Можно загонять получаемые данные в массив и сравнивать два массива.
http://www.php.su/functions/?array-diff
http://www.php.su/functions/?array-diff