0

В попытках нормализовать текст для нечеткого соответствия Я пытаюсь объединить однословные слова (в основном части инициализма) в одно слово. Номера игнорируются. Ниже, где я в:PHP concat small words in string with preg_replace

$strings = array("CROWN ROYAL X R CANADIAN WHISKEY", "CROWN ROYAL X R", "REMY V S O P 8 0", "BARTON L I I T"); 
$string = preg_replace('/\b([A-Z]){1}\s([A-Z]){1}\b/', '\1\2', $string); 

Результаты:

"CROWN ROYAL XR КАНАДСКИЙ ВИСКИ", "CROWN ROYAL XR", "REMY VS OP 8 0", "BARTON LI IT"

Мне нужны VSOP и LIIT. Я применил обходное решение, сначала используя $string = preg_replace('/\b([A-Z]){1}\s([A-Z]){1}([A-Z]){1}\s([A-Z]){1}\b/', '\1\2\3\4', $string);, но я уверен, что есть более изящное и менее дорогостоящее решение?

ответ

-1

проверить это

$strings = preg_replace('~(?<=\b[A-Z])\s+(?=[A-Z]\b)~', '', $strings);