2
我需要在一些文本中大写首字母缩写词。正则表达式匹配重叠/交叉
目前,我有这个正则表达式匹配的首字母缩写:
/(^|[^a-z0-9])(ECU|HVAC|ABS|ESC|EGR|ADAS|HEV|HMI)($|[^a-z0-9])/ig
说明:此的目标是一致的任何地方,他们要么是在文本的开始或结束,或有ISN”的首字母缩写词在他们的任何一边写一个字母或数字(因为那么他们可能是一个词的一部分 - 例如我不想替换单词“Escape”中的“Esc”)。
这工作的大部分时间,但下面的例子不工作:
"abs/esc"
它匹配的abs
,但不是esc
。我猜这是因为比赛重叠,因为正斜杠是与abs
有关的比赛的一部分。
任何人都可以建议如何获得一个匹配?
作为一个方面说明,我使用PHP的preg_replace_callback事后进行转换:
$name = 'abs/esc';
$name = preg_replace_callback('/(^|[^a-z0-9])('ECU|HVAC|ABS|ESC|EGR|ADAS|HEV|HMI')($|[^a-z0-9])/i', function($matches) {
return $matches[1] . strtoupper($matches[2]) . $matches[3];
}, $name);
精氨酸 - 忘字的边界 - 新秀错误 - 谢谢。 –
是的 - 只是等待它让我 - 似乎是一个延迟 –
没问题!而且,是的,有一个延迟(我觉得它也很烦人)。谢谢! :) – Druzion