За последние 24 часа нас посетили 18168 программистов и 1625 роботов. Сейчас ищут 1348 программистов ...

Как соединять переносы слов с доп. символами?

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

  1. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Нужно склеить разорванные слова в тексте в одну строку, удалив справа дефис и цифры или

    точку. Цифры могут быть другими, скорее всего только двухзначные.

    методика акумули- 25
    рования

    сол- 10
    нечную страну

    В систе-.
    ме производится

    Встречается и нормальный текст:
    Заслонки 39
    открыты.

    (Где нет дефиса, цифры удалять не надо)
     
  2. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    preg_replace()
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Код (PHP):
    1. $text = preg_replace('/(-[\s\d.]+)/s','',$text); 
     
  4. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Код (PHP):
    1. $text = preg_replace('/(-[\s\d.]+)/s','',$text);  
    s спецсимвол?

    Добавлено спустя 1 минуту 16 секунд:
    А как будет если нужно убрать числа от 1-9?
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    / завершает выражение, s - модификатор. Я не помню, он влияет на \s или только на . поэтому на всякий случай включил =)
     
  6. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    То есть регулярка убирает все что после "-" ?
    Подскажите плз [\s\d.] что значит?
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    как-то так
    Код (Text):
    1. preg_replace('/([^0-9])([0-9])([^0-9])/','$1$3',$text);
    [\s\d.]+
    значит что на этом месте ожидаются пробелы, переносы строк, цифры или точка.
    Я выучил регулярные выражения по статье в википедии =)

    Добавлено спустя 44 секунды:
    нет. Если там буквы, то не уберет ничего. Чтобы убирала буквы, надо добавить \w
     
  8. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Спасибо)
     
  9. dobrmir

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

    С нами с:
    8 окт 2012
    Сообщения:
    200
    Симпатии:
    2
    Спасибо. Не знал, что помогут, сидел учил регулярки, раньше начал и забросил, сейчас изучил основы, буду надеяться, что поможет.