PHP preg_match soru

4 Cevap php

Ben bir Perl uyumlu düzenli ifade ile aşağıdaki dizede üç kelime nasıl aynı olabilir?

kelime1 # $ kelime2 # $ word3

Ben önceden gerçek kelimeleri "word1, WORD2 ve word3" Bilmiyorum. Ben sadece # $ olan ayırıcı, biliyorum.

Ben bir multibyte kodlaması gibi Ve ben kelime sınır kullanamazsınız. Bu dize \ w kontrol karakteri tarafından tespit edilmez umlauts gibi ASCII olmayan karakterler içerebilir örneğin gelir.

4 Cevap

Bu normal ifade deneyin:

/(\w+)#\$(\w+)#\$(\w+)/


Edit sizin daha fazla bilgi ile bize sağlanan sonra (bu cevaba yorumlara bakınız):

/((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)/
$str = explode('#$', $str);

Regex Bunun için overkill.

Bu hat ile ne yapmak istediğinize bağlıdır rağmen bir split fonksiyonu yararlı olabilir.

Burada bir örnek olsa.

my $line = "word1#$word2#$word3"
my @words = split('#$', $line)

Bu 2 # olan herhangi bir dize için çalışacak

/([^#]+)\#\$([^#]+)\#\$([^#]+)/