Newbe在这里,学到了一些基础知识并且遇到了这个正则表达式。如果有人可以帮我解构它,那将会很棒。提前谢谢!
$source = "ExpandCamelCaseAPIDescriptorPHP5_3_4Version3_21Beta";
preg_replace('/(?<!^)([A-Z][a-z]|(?<=[a-z])[^a-z]|(?<=[A-Z])[0-9_])/', ' $1', $source);
// outputs:Expand Camel Case API Descriptor PHP 5_3_4 Version 3_21 Beta
答案 0 :(得分:4)
表达式
(?<!^)
表示“不在输入开始之前”,或者换句话说“除开始之外的任何地方”。
这是背后的负面外观,其形式为(?<!regex)
,是一个零宽度断言,前面的输入与 regex 不匹配。将!
替换为=
,后面会看到正面。从后面看后面移除<
,你可以向前看。