Как удалить середину строки регуляркой?

Поддержка
  • Есть строка:

    ago 9 minutes, 37 seconds 66,141 views
    

    Как удалить только то что я на скрине выделил желтым:
    1в.jpg
    Чтоб осталось так:

    ago66,141 views
    

    То есть нужно регуляркой удалить (жирным выделил): ago любые символы 66,141 views

    Написал регулярку Регулярные выражения -> Заменить строку.
    Но она удаляет всё что после ago

    ago+([\s\S]+)\d+[\s\S]+views+
    
  • @mik888em said in Как удалить середину строки регуляркой?:

    Есть строка:

    ago 9 minutes, 37 seconds 66,141 views
    

    Как удалить только то что я на скрине выделил желтым:
    1в.jpg
    Чтоб осталось так:

    ago66,141 views
    

    Написал регулярку Регулярные выражения -> Заменить строку.
    Но она удаляет всё что после ago

    ago+([\s\S]+)\d+[\s\S]+views+
    

    В модуле для обработки строк есть команда текст между. Определяем текст между ago и seconds, удаляем его командой замены текста на пустой текст, затем также удаляем слово seconds.

  • @smeckoi77 Регуляркой нужно, т. к. текст 9 minutes, 37 seconds может быть любой.

    То есть нужно регуляркой удалить (жирным выделил): ago любые символы 66,141 views

  • @mik888em проще тогда получать последние числа в строке (просмотры). Ago дописывать, если надо.
    Регулярку не скажу, но строкой сначала отрезаем « views», а потом все после первого пробела с конца. Или регуляркой с конца до пробела берем.

  • (?<=ago).+?(?=\d+,\d+\s+views)
    
  • @Vituskosoy said in Как удалить середину строки регуляркой?:

    (?<=ago).+?(?=\d+,\d+\s+views)

    Попробовал, но
    регулярка

    (?<=ago).+?(?=\d+,\d+\s+views)
    

    работает отлично для:

    ago 9 minutes, 37 seconds 66,141 views
    

    получаю:

    2 years ago66,141 views
    

    Не работает для таких (никак не меняет строку) :

    ago 1 hour, 10 minutes 717 views
    
    ago 46 seconds 405 views
    
  • @mik888em , зачем этот геморрой и расписывание на пол страницы, когда реальная задача - получить число просмотров из строки?

  • @mik888em

    @mik888em said in Как удалить середину строки регуляркой?:

    @smeckoi77 Регуляркой нужно, т. к. текст 9 minutes, 37 seconds может быть любой.

    То есть нужно регуляркой удалить (жирным выделил): ago любые символы 66,141 views

    Так мы этот текст и определяем, чтобы его удалить после.

  • @mik888em said in Как удалить середину строки регуляркой?:

    Есть строка:

    ago 9 minutes, 37 seconds 66,141 views
    

    Как удалить только то что я на скрине выделил желтым:
    1в.jpg
    Чтоб осталось так:

    ago66,141 views
    

    То есть нужно регуляркой удалить (жирным выделил): ago любые символы 66,141 views

    Написал регулярку Регулярные выражения -> Заменить строку.
    Но она удаляет всё что после ago

    ago+([\s\S]+)\d+[\s\S]+views+
    

    Или определить Текст между second и views, а дальше уже скомпоновать.

  • (?<=ago).+?(?=\d+(,\d+)?\s+views)
    
  • @Vituskosoy said in Как удалить середину строки регуляркой?:

    (?<=ago).+?(?=\d+,\d+\s+views)
    

    немного изменил Вашу регулярку и получил решение которое работает для всех вариантов удаления между ago и цифрой просмотров (т.е. с запятой в цифре и без неё)
    Вот регулярка готовая:

    (?<=ago).+?(?=\s+\d+[,|\d+]\d+\s+views)
    
  • @Antonio да, можно просмотры сначала обрезать одной простой регуляркой, потом добавить ago и view сохранять в другу переменную , вот регулярка которая делает это одним кубиком:

    (?<=ago).+?(?=\s+\d+[,|\d+]\d+\s+views)
    
  • @mik888em said in Как удалить середину строки регуляркой?:

    ago 9 minutes, 37 seconds 66,141 views

    lol Scammer,

    You could just parse string by spaces and use last 2 elements from parsed list.
    First element is always the same anyway, - ago. Even very last is always the same,
    so you just need that number of views which is one before last.

    But you wanted regex lol.