Мне нужно регулярное выражение, которое удалит хэштеги в конце строки. Например:

* WCW * черные фургоны за 14 долларов (размер 6) * черная ажурная куртка за 8 долларов (большой размер) * майка с жирафом за 6 долларов (маленький размер) * джинсовые шорты за 8 долларов (размер 2) * красный прозрачный кошелек за 6 долларов #platosclosetmooresville #platosclosetlakenorman #resale #gentlyused #preloved #lakenorman #mooresville #MVL #LKN #fashionista #recycleyourstyle #cornelius #davidson #concord #kannapolis #statesville #salisbury #bargainista #lknshopping #mooresvilleshopping #GetCash #SellYourItems #shopping #BargainShopper #ShopLocal #PlatosCloset #giraffe #OOTD #WCW

Я написал регулярное выражение для соответствия следу хэштега. /#[#\w\s]*\z/ . также пробовал с /#[#\w\s]*$/u. Но они только возвращаются

#lknshopping #mooresvilleshopping #GetCash #SellYourItems #shopping #BargainShopper #ShopLocal #PlatosCloset #giraffe #OOTD #WCW

Он должен охватывать все:

#platosclosetmooresville #platosclosetlakenorman #resale #gentlyused #preloved #lakenorman #mooresville #MVL #LKN #fashionista #recycleyourstyle #cornelius #davidson #concord #kannapolis #stateslkville #salisbury #sbargainash #salisbury #sbargainash #PlatosCloset # Жираф #OOTD #WCW

Решение не должно совпадать с хэштегами в середине строки.

0
Madhuri Bhamre 19 Сен 2018 в 18:27

2 ответа

Лучший ответ

Регулярное выражение #[#\w\s]*\z начинается с соответствия # и сопровождается символом класс, который будет соответствовать одному из нескольких символов. Этот класс символов повторяется ноль или более раз, поэтому он, например, также будет соответствовать ###a bc или только одному начальному #

Если вы хотите сопоставить хэштеги, которые являются следом предложения, и между ними не может быть слова, которое не является хештегом, вы можете использовать:

#\w+(?:\s+#\w+)*\z

Regex demo

< Сильный > Объяснение

  • # Совпадение буквально
  • \w+ Соответствует один или несколько раз словесному символу
  • (?: Группа без захвата < UL>
  • \s+#\w+ один или несколько раз соответствует пробельному символу, за которым следует #, и один или несколько раз соответствует словесному символу
  • )* Закрыть группу без захвата и повторить ноль или более раз
  • \z Подтвердить конец строки
  • 1
    The fourth bird 19 Сен 2018 в 19:53

    Я не уверен, хотите ли вы использовать каждую строку хэштега:

    • (без #): (?<=#)[[:alpha:]]* проверьте это
    • (с #): #[a-zA-Z]+ проверьте это
    0
    lucas_7_94 19 Сен 2018 в 16:00