Быстрый & Грязные:
\#w+ \#b+ \d+(?:\.?\d+)? (.*)
Пример:
<?php
$string = "France Gros Frère et Sur Hte-Cote de Nuit Blc 2008 #wwww #bbbbb 8.5 Nice yellow fruit nose, some vanilla notes, good crispness";
$regex = "/\#w+ \#b+ \d+(?:\.?\d+)? (.*)/";
preg_match ($regex, $string, $output);
echo $output[1];
?>
Но если может быть строкой, без какого-либо числа после #bbbbb, то лучше использовать это:
\#w+ \#b+\s*(?:\d+(?:\.\d+)?)?\s*(.*)
Поэтому вам не нужно указывать номер после #bbbbb, и вы можете использовать столько пробелов, сколько хотите, между #bbbbb, номер (если есть) и строку, которую вы хотите извлечь.
Большинство из них не является обязательным, так что ваша строка может выглядеть следующим образом:
BlaBla #W #BB привет мир
Или как этот
BlaBla #wwwwwwwwwwwwwwww # bbb 1337 Hello World
Или как t его:
#W #bHello Мир
Вы можете увидеть результат here
EDIT:
В соответствии с просьбой, это также следует удалить URL-адреса внутри из строка:
<?php
$string = "France Gros Frère et Sur Hte-Cote de Nuit Blc 2008 #wwww #bbbbb 8.5 Nice yellow fruit nose, some vanilla notes, good crispness http://www.example.com/23232";
$regex = "/\#w+ \#b+ \d+(?:\.?\d+)? (.*)/";
preg_match ($regex, $string, $output);
if (isset($output[1])) {
$regex = "!https?:\/\/(?:[\da-z\.-]+)\.(?:[a-z\.]{2,6})(?:[\/\w \.-]*)*\/?!";
$newString = trim(preg_replace ($regex, '', $output[1]));
echo $newString;
} else {
echo $string;
}
?>
Результат должен быть:
Ницца желтый нос фруктов, некоторые ванильные ноты, хороший рассыпчатость
@Anirudh У меня есть идея взрыва с '#bbbb b' и сделать что-то. Я ожидаю эррос, поэтому я ищу лучшее решение. – niksmac