Ben bu kodu bakarak oldum ve bu benim $ giriş dizesi eşleşen ve Doları [0] mağazası 'test' maçları gerekiyordu
$input = ':testing';
$r = preg_match('/^(?<=\:).+/',$input,$matches);
Bunun nesi yanlış?
(?<=)
kapalı ifade eşleşen metin desen parantez içinde before pozisyon oluşması gerekir anlamına gelir, pozitif görünüm behind olduğunu. Bu durumda, o başlangıç-of-string pozisyonundan sonra (^
), ama ilk gerçek karakterden önce (.+
burada dizesindeki karakterlerin tüm maçlar meydana gerektiği anlamına gelir ), ve o zamandan beri :
ilk gerçek karakter ve hiçbir :
:
(tabii ki), bu maç için başarısız önce var.
Bunun yerine, ne muhtemelen yapmak istediğiniz bir capture group kullanmaktır, şöyle:
$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
Böylece $matches[1]
istediğiniz ne olduğu, yakalama grup içinde metni almak için kullanabilirsiniz.