За последние 24 часа нас посетили 22414 программистов и 1153 робота. Сейчас ищут 609 программистов ...

Найти целое слово по его части

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

  1. trytofinderror

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

    С нами с:
    24 ноя 2018
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте!
    Подскажите, пожалуйста, регулярку для замены слов по наличию в них определенной последовательности букв (границей слова может быть знак препинания или пробел, а также строка может начинаться и заканчиваться искомым словом).
    Например, из "Наша Таня громко плачет" нужно вытащить "Таня" по запросам: та,ан,ня,аня,тан,таня.

    Спасибо
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @trytofinderror, если ещё не, то вот вариант: [а-яА-ЯёЁ]*ня[а-яА-ЯёЁ]*
     
    Deonis нравится это.
  3. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Тут у тебя Насколько я понимаю 4 варианта:
    Искомое слово в начале строки;
    Искомое слово в конце строки;
    Искомое слово посередине строки;
    Искомое слово единственное в строке.


    "Наша Таня громко плачет"

    Шаблон:
    (\s|^)?([^\s]+?)(\s|$)
    \1замена\3
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Угу... @trytofinderror, Только про флаг u и, если регистр не важен, то и флаг i не забудьте. Кстати, учитывая то, что слова, состоящие наполовину из кириллицы и наполовину из латиницы это нонсенс, то чтобы не писать гирлянды в символьных классах, можно сделать так:
    Код (Text):
    1. /[\pL]*ня[\pL]*/ui
    И со всеми четырьмя промахнулись ;)
     
  5. johovich

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

    С нами с:
    24 авг 2016
    Сообщения:
    146
    Симпатии:
    17
    Моя регулярочка как раз в порядке. Та которую ты процитировал может и не работает.