Удалить хэштеги в конце предложения

Я хотел бы удалить все слова в конце текста, начинающиеся с space а также # знак.
URL-адреса или хэштеги в предложении не должны быть удалены.

Пример текста:

hello world #dontremoveme foobar http://example.com/#dontremoveme #remove #removeme #removeüäüö

Я пробовал это, но он удаляет все хэштеги:

$tweet = "hello world #dontremoveme foobar http://example.com/#dontremoveme #remove #removeme #removeüäüö";
preg_match_all("/(#\w+)/", $tweet, $matches);
var_dump( $matches );

Моя идея состоит в том, чтобы проверить каждое слово, начинающееся в конце текста, чтобы найти # с space впереди, пока это не так.
Как перевести это в регулярное выражение?

0

Решение

Вы можете использовать что-то вроде этого: ( #[^# ]+?)+$ и замените его пустой строкой.

Пример доступен Вот. Поскольку у вас нет символов ASCII, . Оператор (который соответствует любому персонажу) должен помочь вам справиться с любым персонажем.

0

Другие решения

Следующее регулярное выражение соответствует всем словам, начинающимся с [Space]# в конце строки.

/( #\S+)*$/g

https://regex101.com/r/eH4bJ2/1

0

Это сделает работу:

$tweet = "hello world #dontremoveme foobar http://example.com/#dontremoveme #remove #removeme #removeüäüö";
$res = preg_replace("/ #\p{L}+\b(?!\s+\p{L})/u", '', $tweet);
echo $res,"\n";

Выход:

hello world #dontremoveme foobar http://example.com/#dontremoveme
0
По вопросам рекламы [email protected]