2013-02-17 2 views
0

Это мой первый опыт использования REGEX с preg_match, и я вообще не знаком с REGEX. Поэтому я пытаюсь найти строку (без учета регистра) def, за которой может следовать строка во входе. Регулярное выражение я использую: (?-i)def?\.Найти литеральную строку в PHP и REGEX

Я получаю следующее сообщение об ошибке: Warning: preg_match(): Unknown modifier 'd' in /var/www/process.php on line 11

При вводе: asdsa saj dasjdkj def ddas

и той же ошибку с любым другим входом.

Так что же я здесь испортил? Есть ли какое-то простое исправление?

Извините, если это кажется глупым, но я ребенок цыпленок в этой области PHP.

+0

Почему вы с помощью регулярных выражений для поиска буквального подстроки? 'strstr()' кажется лучшим подходом. – Johnsyweb

+0

@johnysweb hmm ... кажется разумным. благодаря! – user115422

ответ

2

Для вашего регулярного выражения вам необходимо использовать delimiting character. Это первый символ в вашем регулярном выражении и должен быть не алфавитно-цифровым (без пробелов, без обратного слэша) символом. Таким образом, синтаксический анализатор regex принимает в качестве примера разделительный символ (стиль скобки) ( и считает, что d является модификатором после закрывающей скобки, который он не распознает, поскольку он не существует.

Лучше регулярное выражение будет:

/def/i 

, который будет соответствовать "DEF" в строке. Что вы пытаетесь совместить с частью (?-i)? Имеет def, за которым следует .? Возможно ли f? Это то, что вы в настоящее время говорите двигателю регулярных выражений с вашим примером regex.

EDIT: Matching «Был» или «Будет ли» в начале следует пробел:

/^(Was|Will) /i 
+0

Я видел это на сайте regex, поэтому я думаю, что я испортил, добавив разные правила регулярного выражения. – user115422

+2

Если вы расширите то, что именно вы пытаетесь сопоставить, я могу обновить предложение regex. Прямо сейчас я не понимаю, что именно вы пытаетесь сделать. – migg

+0

ok, моя фактическая задача состояла в том, чтобы проверить, начинается ли строка со слова «Was» или «Will», а затем пробел, и строка может быть нечувствительной к регистру ... – user115422

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