За последние 24 часа нас посетили 17982 программиста и 1607 роботов. Сейчас ищут 1364 программиста ...

Не срабатывает регулярка

Тема в разделе "Регулярные выражения", создана пользователем gans5131, 9 сен 2013.

  1. gans5131

    gans5131 Активный пользователь

    С нами с:
    1 ноя 2010
    Сообщения:
    6
    Симпатии:
    0
    Ссылка на рабочую регулярку http://regexr.com?368t0

    На сайте regexr.com все работает:

    Регулярка:
    Код (Text):
    1. ([a-zA-Zа-яА-Я0-9-]{0,40})\s?(Ковер|Коврик|Дорожка|Ковролин)\s?"?([a-zA-Zа-яА-Я0-9-\s\/]{0,100})"?[\s]{1,2}([0-9,xх]{1,30})\s?([\W]{0,10})
    Входящие данные:
    11С51-ВИ Коврик для т/ван 0,37х0,48

    Результат:
    11С51-ВИ
    Коврик
    для т/ван
    0,37х0,48

    На моем сайте в коде страницы:

    Код (Text):
    1. $subject=trim($value);
    2. $pattern = '/^([a-zA-Zа-яА-Я0-9-]{0,40})\s?(Ковер|Коврик|Дорожка|Ковролин)\s?"?([a-zA-Zа-яА-Я0-9-\s\/]{0,100})"?[\s]{1,2}([0-9,xх]{1,30})\s?([\W\d\s-]{0,10})$/';
    3. preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
    Не работает с
    11С51-ВИ Коврик для т/ван 0,37х0,48
    хотя на сайте regexr.com работает

    Работает с
    11С58-ВИ Ковер 0,60х1,10

    Результат:
    1С58-ВИ
    Ковер
    0,60х1,10


    Вроде бы примеры далеко друг от друга не ушли, но почему один работает, а другой нет, хотя оба работают на сайте regexr.com
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    регулярки либо идентичные, либо разные. Почему вы используете измененную, а не ту, которая рабочая?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.793
    Симпатии:
    1.330
    Адрес:
    Лень
    Код (PHP):
    1. $value = "11С51-ВИ Коврик для т/ван 0,37х0,48";
    2. $subject=trim($value);
    3. $pattern = '/^([a-zA-ZАаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя0-9-]{0,40})\s?(Ковер|Коврик|Дорожка|Ковролин)\s?"?([a-zA-ZАаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя0-9-\s\/]{0,100})"?[\s]{1,2}([0-9,xх]{1,30})\s?([\W\d\s-]{0,10})$/';
    4. preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
    5. print_r($matches); 
    Код (Text):
    1. Array ( [0] => Array ( [0] => 11С51-ВИ Коврик для т/ван 0,37х0,48 [1] => 0 ) [1] => Array ( [0] => 11С51-ВИ [1] => 0 ) [2] => Array ( [0] => Коврик [1] => 12 ) [3] => Array ( [0] => для т/ван [1] => 25 ) [4] => Array ( [0] => 0,37х0,48 [1] => 42 ) [5] => Array ( [0] => [1] => 52 ) )
    о мама мия, лан... регулярки не могут работать с русс символами
     
  4. gans5131

    gans5131 Активный пользователь

    С нами с:
    1 ноя 2010
    Сообщения:
    6
    Симпатии:
    0
    Чуяло моё сердце, что беда в русс символах. Спасибо, из 2000 позиций не обработалось только 2-е.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Почему? если utf8 и модификатор u поставить, то вполне. http://www.cyberforum.ru/php-regex/thread223472.html#post1255738
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.793
    Симпатии:
    1.330
    Адрес:
    Лень
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    могут. просто не все умеют это делать правильно
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы сразу напишите как правильно и хорошо бы понять как это делать и в js тоже
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    explode =) через "пробел" разложить массив.
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Я же дал ссылку, проверено, работает. У меня в парсерах нормально регулярки с русскими символами работают