(?<=)
является положительным взглядом - за , что означает, что текст, соответствующий вложенному выражению, должен находиться за до позиции круглых скобок в шаблоне. В этом случае это означает, что это должно произойти после позиции начала строки (^
), но до первого фактического символа (.+
соответствует всем символам в строке здесь), и так как :
является первым действительным символом, и перед :
(очевидно) нет :
, оно не соответствует.
Вместо этого вы, вероятно, захотите использовать группу захвата , например:
$input = ':testing';
$r = preg_match('/^:(.+)/',$input,$matches);
// $matches[0] has the entire text matched by the pattern, ":testing"
// $matches[1] will now contain "testing" from the first capture
Таким образом, вы используете $matches[1]
, чтобы получить текст из группы захвата, что вам и нужно.