这组(?<! - ^)在正则表达式中意味着什么? - >

时间:2013-10-09 03:24:19

标签: regex expression

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

1 个答案:

答案 0 :(得分:4)

表达式

(?<!^)

表示“不在输入开始之前”,或者换句话说“除开始之外的任何地方”。

这是背后的负面外观,其形式为(?<!regex),是一个零宽度断言,前面的输入与 regex 不匹配。将!替换为=,后面会看到正面。从后面看后面移除<,你可以向前看。