Работа с текстом, регулярные выражения

Grapefruit Lips

Новичок
Работа с текстом, регулярные выражения

Вот хочу сделать бота, что бы отвечал на вопросы =)
подскажите с регулярными выражениями

как можно отслеживать с помощью рег. выражений, если, например в тексте есть знак вопроса и нет заданного условиями слова, то работать дальше как просто с вопросом. И если в тексте есть ОПРЕДЕЛЕННОЕ слово и знак вопроса, то работать подругому и т.д
подскажите такой механизм?

как задать условия в рег.выражениях, например для данных вариантов:
1-й: "Почему нет?" , 2-ой: "Почему?", 3-й: "Нет!" , 4-й: "Нет?".

что бы на 1-ый бот отвечал одно, на 2-ой другое и т.д..

т.е. я не знаю, как в регах написать условия, что бы, если в тексте есть вопрос и нет заданного слова, то выводить одно, если есть два слова заданного условиями и нет вопроса - другое, и т.д....
 

impossible

Новичок
AI пахнет ...
eregi

-~{}~ 28.05.05 22:03:

думаю способ поиска тут не так важен, как сам алгоритм
 

Grapefruit Lips

Новичок
Фанат
а что нужно?

impossible
я не понимаю, как задать такие, вроде бы простые условия, в eregi, preg_match и др. функциях =(((( не понимаю например, как написать и что бы ЕСЛИ слово с вопросом, и если два слова без вопроса

могу задать на одно слово "да" =))
PHP:
if(preg_match("/\bда\b/i", $word))  {
echo "ответ на слово да";
} else {
echo "другие ответы";
}
 

Grapefruit Lips

Новичок
спасибо вам!
буду разбираться

-~{}~ 28.05.05 23:35:

Вот, что то набросал:
PHP:
if(strpos($word, '?')) {
if(preg_match("/\bлет\b/i", $word))  {
echo "Мне столько-то лет...";
} else {
echo "Другие ответы на текст со знаком вопроса";
}
}
else {
if(preg_match("/.*прив.*/i", $word)){
echo "Привет...";
} else {
echo "Другие ответы на текст без знака вопроса...";
}
}
strpos -- Возвращает позицию первого вхождения подстроки

А если вопрос будет "Привет! Сколько тебе лет?" ?
как быть? как найти и "привет", и/или "привет" с "!" и "лет" со знаком "?" ? Это больше всего меня интересует

может я что-то не понимаю? =(
 

Фанат

oncle terrible
Команда форума
самое главное, чего ты не понимаешь - это то, что ты полагаешь, будто регулярные выражения за тебя будут сами анализировать текст. Довольно странная фантазия.
В то время, как анализировать текст должен ты сам.
Твоя программа.
Но при этом даже не знаешь, с какого конца к этой программе подойти.
Чего ты к регулярным прицепился? В приведённом примере они тебе нафиг не нужны.

Находишь ключевые слова и действуешь соответственно.
у тебя проблема не НСХОЖДЕНИЕМ слов. которым занимаются регулярные.
А проблема с их интерпретацией.
поэтому первый шаг, который ты должен сделать - это забыть про регулярные.
Второй - начинать формализовывать своё мямленье про
как быть? как найти и "привет", и/или "привет" с "!" и "лет" со знаком "?" ?
найти нетродно. что тебе надо? лет со знаком вопроса? ищи лет со знаком вопроса. Это не проблема. проблема - интерпретировать. проблема чётко сказать - если я вижу такое-то и такое-то слово - действую так-то.
вижу другое слово - пишу то-то.
а потом сего лишь перенести это в скрипт
 

_RVK_

Новичок
Все таки если рассматривать это как попытку паройти тест Тьюринга, то без регов тут не обойтись :)

Но Фанат прав, что алгоритм здесь важнее. Вообще такие задачи проще решаются на прологе.
 
Сверху