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