0

为了使文本标准化以进行模糊匹配,我试图将单个字母单词(主要是首字母缩写词的一部分)组合成一个单词。数字被忽略。下面是我所在的位置:

$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);first 实现了一种解决方法,但我确定有一个更优雅且成本更低的解决方案?

4

1 回答 1

-1

检查这个

$strings = preg_replace('~(?<=\b[A-Z])\s+(?=[A-Z]\b)~', '', $strings);
于 2015-04-26T20:39:37.687 回答