在努力规范模糊匹配的文本时,我试图将单个字母单词(大多数是初始主义的一部分)组合成一个单词。数字被忽略。以下是我所在的地方:
$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 CANADIAN WHISKEY”,“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);
实现了一种解决方法,但我确信有更优雅且成本更低的解决方案?
答案 0 :(得分:-1)
检查这个
$strings = preg_replace('~(?<=\b[A-Z])\s+(?=[A-Z]\b)~', '', $strings);