Regex, чтобы разбить CamelCase String PHP - PullRequest
3 голосов
/ 04 июля 2011

Допустим, у меня есть следующая строка:

getPasswordLastChangedDatetime

Как бы я мог разделить это заглавными буквами, чтобы я мог получить:

get
Password
Last
Changed
Datetime

Ответы [ 7 ]

6 голосов
/ 04 июля 2011

Если вас интересуют только символы ASCII:

$parts = preg_split("/(?=[A-Z])/", $str);

DEMO

Конструкция (?= ..) называется lookahead [документы] .

Это работает, если части содержат только заглавные буквы в начале.Это становится сложнее, если у вас есть такие вещи, как getHTMLString.Это может соответствовать:

$parts = preg_split("/((?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z]))/", $str);

DEMO

1 голос
/ 04 июля 2011

Например:

(?:^|\p{Lu})\P{Lu}*
1 голос
/ 04 июля 2011

Спросил это слишком рано, нашел это:

preg_replace('/(?!^)[[:upper:]]/',' \0',$test);
0 голосов
/ 04 июля 2011
 preg_split("/(?<=[a-z])(?=[A-Z])/",$password));
0 голосов
/ 04 июля 2011

Используйте это: [a-z]+|[A-Z][a-z]* или \p{Ll}+|\p{Lu}\p{Ll}*

0 голосов
/ 04 июля 2011
preg_split('@(?=[A-Z])@', 'asAs')
0 голосов
/ 04 июля 2011

Не нужно слишком сложное решение.Это делает это

preg_replace('/([A-Z])/',"\n".'$1',$string);

Это не заботится об акронимах конечно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...