Regex найти слова, начинающиеся с определенного символа
Я пытаюсь найти слова, начинающиеся с определенного символа, например:
Lorem ipsum #text Второй лорам ipsum. Как дела. Все в порядке. Готово. Что-то теперь.
Мне нужно, чтобы все слова начинались с "#". поэтому мои ожидаемые результаты: #text, #are, #else
Любые идеи?
Ответы
Ответ 1
Искать:
- то, что не является символом слова, тогда
- #
- некоторые символы слова
Итак, попробуйте следующее:
/(?<!\w)#\w+/
Или в С# это будет выглядеть так:
string s = "Lorem ipsum #text Second lorem ipsum. How #are You. It ok. Done. Something #else now.";
foreach (Match match in Regex.Matches(s, @"(?<!\w)#\w+"))
{
Console.WriteLine(match.Value);
}
Вывод:
#text
#are
#else
Ответ 2
Попробуйте #(\S+)\s?
Ответ 3
Сопоставьте слово, начинающееся С# после пробела или начала строки. Последняя граница слова не обязательно в зависимости от вашего использования.
/(?:^|\s)\#(\w+)\b/
Скобки заключат ваше слово в группу. Теперь, это зависит от языка, как вы применяете это регулярное выражение.
(?:...)
- не захватывающая группа.
Ответ 4
Для размещения на разных языках у меня есть это (PCRE/PHP):
'~(?<!\p{Latin})#(\p{Latin}+)~u'
или же
$language = 'ex. get form value';
'~(?<!\p{' . $language . '})#(\p{' . $language . '}+)~u'
или пролистать несколько скриптов
$languages = $languageArray;
$replacePattern = [];
foreach ($languages as $language) {
$replacePattern[] = '~(?<!\p{' . $language . '})#(\p{' . $language . '}+)~u';
}
$replacement = '<html>$1</html>';
$replaceText = preg_replace($replacePattern, $replacement, $text);
\w
прекрасно работает, но, насколько я видел, только для латинского алфавита.
Переключите Latin
на Cyrillic
или Phoenician
в приведенном выше примере.
Приведенный выше пример не работает для скриптов 'RTL'.
Ответ 5
Код ниже должен решить дело.
-
/\$(\w)+/g
Ищет слова, начинающиеся с $
-
/#(\w)+/g
Ищет слова, начинающиеся с #
Ответ /(?<!\w)#\w+/
данный Марком Байерсом, выдает предупреждение, как RegExr.com
ниже на сайте RegExr.com
"(?<!" The "negative lookbehind" feature may not be supported in all browsers.
предупреждение можно исправить, изменив его на (?!\w)@\w+
, удалив >