Категория:
Опубликовано:

Regex - разбиваем CamelCase на слова

Camel with text "CamelCase"

Еще одна регулярка в коллекцию.

На этот раз, для разбивки CamelCase'а на слова.

Такой таск нужен не так часто, но когда понадобится - пусть уж лучше будет ;)

Итак, сам регекс вот:

((?<=\p{Ll})\p{Lu}|\p{Lu}(?=\p{Ll}))

Ну, и процедурка под нее:

/**
 * Replace CamelCased text by text with spaces.
 *
 * @param string $text Text to replace.
 *
 * @return string
 */
function splitByCapital(string $text): string
{
    $pattern = '/((?<=\p{Ll})\p{Lu}|\p{Lu}(?=\p{Ll}))/u';
    $result = preg_replace($pattern, ' $1', $text);

    return trim($result);
}

Пользоваться, в общем, элементарно:

$text = splitByCapital($camelCasedText);

Юз ит эниуер! :)

Если у Вас возникли вопросы, замечания, предложения или просто благодарность - пишите в комментариях.
Делитесь полезными материалами в социальных сетях.