Php ve python sıradanifade fark?

1 Cevap php

I need to parse a string 'Open URN: 100000 LA: ' and get 100000 from it. on python regexp (?<=Open URN: )[0-9]+(?= LA:) works fine but in php it gives following error:

preg_match(): Unknown modifier '['

Ben bu yüzden bana bu sorunu çözmek ve python ve php regexplerde farkı anlatmak için yardım lütfen, bu çalışma php gerekir.

1 Cevap

Sen) in PHP (to which preg_match() ait Perl Compatible Regular Expressions (PCRE) fonksiyonlarını kullanırken delimiters kullanmak zorunda.

Kimden documentation:

PCRE işlevleri kullanırken, desen delimiters tarafından alınmış olması gereklidir. Bir ayraç olmayan herhangi bir alfanümerik olmayan eğik çizgi, boşluk olmayan bir karakter olabilir.

Sınırlayıcı kullanarak nedeni pattern modifiers son ayıracından sonra, örneğin ekleyebilirsiniz olmasıdır Bir harf duyarsız maç yapmak için:

#[a-z]#i  // # is the delimiter.

Back to your problem:

Senin durumunda, PHP parantez () sizin sınırlayıcılardır (evet, açılış ve kapanış parantez geçerli sınırlayıcılardır, documentation bakınız) düşünüyor ve ?<=Open URN: sizin desen . Sonra [ karşılaşır ve pattern modifier gibi davranır, ama geçerli bir değildir.

Sınırlayıcı ile desen %:

preg_match('%(?<=Open URN: )[0-9]+(?= LA:)%', 'Open URN: 100000 LA: ');

documentation of preg_match() bir çok örnekleri vardır


Python vs PHP

The only thing I found regarding regular expressions in Python is, that Perl syntax is used but I don't know if the full syntax is supported.
As already mentioned, PHP uses PCRE. Description of the differences between PCRE and Perl regex.