За последние 24 часа нас посетили 17824 программиста и 1613 роботов. Сейчас ищут 1318 программистов ...

Игнорировать символ

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

  1. gk0007

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

    С нами с:
    27 авг 2012
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте. Слова разделены на слоги символом "·".
    Например:man·u·al, man·u·fac·ture, mar·a·thon, hap·pen и т.д.
    Нужно регулярное выражение, которое бы определяло является ли разделенное слово данным. Например:
    man·u·al=manual, hap·pen!=haven и т.д.
    Пока единственное что придумал, это из данного слова формировать выражение, у которого после каждого символа
    "(·)*".
    Например:haven - h(·)*a(·)*v(·)*e(·)*n, manual - m(·)*a(·)*n(·)*u(·)*a(·)*l.
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    а если выкинуть эти точки из строки да и сравнить? по моему так гораздо проще....либо я не так понял задачу...
     
  3. gk0007

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

    С нами с:
    27 авг 2012
    Сообщения:
    2
    Симпатии:
    0
    К сожалению, в силу специфики структуры данных в которой находится список слов, слова от туда нельзя читать (а значит удалять эти точки или другим способом обрабатывать). Есть лишь метод, который ведет поиск по структуре с помощью регулярных выражений (в случае успешного выполнения регулярного выражения относительно слова вернет № записи, что мне и требуется).
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    ОМГ!
    Код (PHP):
    1. $str='man·u·al';
    2. if(str_replace('·','',$str)=='manual') {
    3.     echo $str; //man·u·al
    4. } 
    Код (PHP):
    1. $str='man·u·al';
    2. $str_r=str_replace('·','',$str);
    3. if($str_r=='manual') {
    4.     echo $str; //man·u·al
    5. } 
    Код (PHP):
    1. $str='man·u·al';
    2. $str=str_replace('·','',$str);
    3. if($str=='manual') {
    4.     echo $str; //manual
    5. } 

    А также лучше, чтобы не писать каждый раз условие (на сильно) на проверку равенства, прогоняйте через цикл и массив...
     
  5. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    он вишь че говорит...читать записи нельзя.....я правда не понимаю что это значит....но вот....
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Значит, что эти слова с точками где-то в недоступном для программы месте. Она не знает, что там за слова и, соответственно, невозможно сделать str_replace - просто нету той самой строки, в которой замены производить нужно. Я так это понял.
    Думаю, можно пойти обратным путём - не пытаться отбрасывать точки в тех словах, которые в некой недоступной базе, а добавлять эти точки в нужные места в словах, которые нужно искать (которые есть в скрипте).
    Ну, можешь ещё так попробовать
    m·?a·?n·?u·?a·?l