Обрезать всё, что после первого тире

Тема в разделе "Регулярные выражения", создана пользователем Sunday, 17 июл 2016.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    785
    Симпатии:
    328
    Подсобите плиз с регуляркой для PHP или для Notepad-а может, если там это возможно.

    Есть несколько тысяч строк, которые могут имеют такой формат:
    1-ю часть строки нужно оставить и обрезать после неё всё, включая пробелы.
    Нужно учесть, что в 1-й части в словах тоже может быть дефис.
    Во второй части могут встречаться какие угодно слова, знаки препинания, спец. символы и цифры.

    Может это облегчит задачу:
    Тире, которое идёт сразу после 1-й части всегда среднее, и всегда с пробелами по краям, и встречается только в этом месте.
    А дефис, который встречается в словах, всегда короткий и без пробелов.
    В примере я это показал.
     
  2. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    253
    Симпатии:
    146
    Обязательно регулярным выражением?
    Можно с помощью explode в PHP это сделать.
    PHP:
    $file = array('Это слово или фразу нужно оставить – слова, слова, слова-слова, 12345, слова\слова и цифры.','Это-слово или фразу нужно оставить – слова, слова, слова. Слова; (слова).');
    foreach(
    $file as $v) {
        echo 
    explode(' - ',$v)[0] . "\n"
    }
     
    Sunday нравится это.
  3. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    245
    Симпатии:
    321
    Если регуляркой для PHP или для Notepad-а
    Код:
    (?m-s)^.+?\K – .*
    
    Строку замены оставить пустой.
     
    Sunday нравится это.
Статус темы:
Закрыта.