2011-01-28 1 views
1

Я пытаюсь извлечь часть строки, например. «10% от подготовки пищи с помощью кометы», мне нужна часть «10% off», извлеченная, чтобы соответствовать чему-то еще позже.Извлечение «10% off» или «£ 25 off» из строки через регулярное выражение

Также иногда начало строки начинается с «10% off», а иногда оно начинается с «£ 50 off», поэтому это немного сложно.

Любая помощь будет высоко оценена.

Спасибо! Милош

+0

если вы трафаретная очищая. данных с других веб-сайтов, вам нужно иметь дело с любой кодировкой символов, сущностями и экранированием, которые они используют. '' 'в частности, может быть представлен несколькими способами на странице HTML. – Spudley

+0

Я не сломаю данные, это для нашего собственного сайта, и кодировка установлена ​​на UTF-8 – Milos

ответ

4

(£\d+|\d+%) off должен делать это, \d+ часть означает "один или более цифр.

+2

\ d + - это одна или несколько цифр. –

+0

Спасибо, исправлено :) – mikel

+0

Хорошо работает, но как и в другом примере, когда символ фунта возвращается, он выглядит как « 3 off». – Milos

1
((?:£\d*|100%|[0-9][0-9]?%) off) 

Это регулярное выражение может помочь вам

+0

Спасибо! Почти работает правильно:) ... для символа фунта, когда он возвращается, я получаю « 3 off». – Milos

+0

Извините. Я не знаю, насколько это правильно на php – kolko

1

Попробуйте с этим: /^(.* выкл)/Ui

Edit: Or/([0-9] + выкл)/Ui

+1

Это уловит любое предложение, в котором есть слово. Это слишком жадно. В предложении «Отправление в отпуск? Получите 10% от своего следующего бронирования», ваш RegEx вернется «Отправляясь в отпуск? Получайте 10%». –

+0

Не жадный, посмотрите на вариант U – soju

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

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