Как найти вхождение в строке «@слово слово»?

Ссылка скопирована
1 ответ

Как сделать из строки

Привет,  @username lastname  как твои дела? Давай @username lastname поиграем

Привет, @username lastname как твои дела? Давай @username lastname поиграем

Массив в виде

[Привет, @username lastname,  как твои дела? Давай ,  @username lastname, поиграем]

[Привет, @username lastname, как твои дела? Давай , @username lastname, поиграем]

Сделал такой regex/@w+|[^@s][^s@]*(?:s+[^@s][^s@]*)*/g но он ищет только первое слово, т.е. так @username, а как подключить второе - всю голову сломал

Дополнительно:

И чем это принципиально отличается от предыдущего вопроса?

ну кроме того что использовать пробелы в «ключевых словах» это явный путь к миллиону проблем…

  • а как подключить второе - всю голову сломал

    Я ранее Вам уже показал пример, как это можно сделать - Как найти вхождения #слово в JS?, покажите код, над которым Вы так долго ломали голову.

  • Михаил Р., я делал две задачи, потом подставил вашу и показал как пример. Ваш ответ на пред. вопрос полностью рабочий и отметил решением, за что вам большое спасибо!
  • У вас всегда может быть ровно два слова или иногда одно, а иногда три?
  • Алексей Уколов, ровно два слова только. Т.е @word_space_word
  • Я понял. Автор, хоть и не сознается, хочет обернуть юзернеймы в ссылки. И следующим вопросом от него будет вопрос с тремя юзернеймами в строке.

    Но для этого не надо бить строки. Для этого надо найти юзернейм через match (намного более простой - начинается с @, заканчиванется на ",", два пробела или конец строки) и его начало через indexOf. в новую строку поместить начало и юзернейм с оберткой,от старой - отрезать по конец найденного юзернейма и повторять, пока не закончатся юзернеймы в строке. Потом хвост приделать к результату.

    Хотя даже если и не надо делать обертку - вместо склеивания новой строки можно формировать массив подобным же образом в цикле.

  • Ответы:

    (@w+s?w+).*1

    что-то в этом роде?

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Сергей Миронов Ответ

    Для того чтобы найти вхождение в строке «@слово слово», можно воспользоваться функцией preg_match() в PHP, которая позволяет использовать регулярные выражения для поиска совпадений в строке. В данном случае, мы можем использовать следующее регулярное выражение:

    $string = "Пример строки @слово слово для поиска";
    $pattern = "/@слово слово/";
    if (preg_match($pattern, $string)) {
        echo "Найдено вхождение в строке";
    } else {
        echo "Вхождение не найдено";
    }

    $string = "Пример строки @слово слово для поиска"; $pattern = "/@слово слово/"; if (preg_match($pattern, $string)) { echo "Найдено вхождение в строке"; } else { echo "Вхождение не найдено"; }

    Этот код будет искать вхождение строки "@слово слово" в переменной $string и выводить сообщение о результате поиска. Регулярное выражение "/@слово слово/" указывает на то, что мы ищем именно такую последовательность символов в строке.

    Если вам нужно найти вхождение строки без учета регистра, можно добавить модификатор i к регулярному выражению:

    $pattern = "/@слово слово/i";

    $pattern = "/@слово слово/i";

    Таким образом, вы сможете находить вхождения строки независимо от регистра символов. Надеюсь, это поможет вам решить вашу проблему с поиском вхождения строки «@слово слово».

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно