Bazı karanlık durumlarda "/ ^ maç /" gibi bir düzenli ifade "başka bir şey" olan bir satır eşleşen tam oposite şekilde çalışır, ve bunu düzeltmek için tek yol parantezi içindeki tüm regex koymak için ... "/ ^ (maç) / "neden oluyor bu?
Sadece burada vahşi bir tahmin ... Ben aklınıza gelebilecek tek örnek size tarif davranışı değişiyor verecekti:
/^foo|bar/
karşı
/^(foo|bar)/
Parantez eklenmesi bu düzenli ifadenin anlamını değiştirir unutmayın. İkinci dizenin başında foo veya bar eşleşir. İlk maçı dize dize veya barda anywhere başında foo. Size anlatıldığı gibi bu bazı yanlış sonuç verebilir.
It's an easy mistake karşı forget those parentheses... I've done it on occasion karşıo ...blush... ;)
I can't think of any other examples right now, but I'm sure there might be other times when the addition of parentheses gives a subtle change in meaning. Next time, remember karşı save the example you found and post it here so we can see it.
Tamamen rastgele tahmin, ama sen bir de kullanıyordu split
?
Ben bu yazarsanız javascript, (PHP hakkında emin değilim):
"matchabc".split(/^match/)
Alıyorum:
["", "abc"]
Bu bölünmüş dize kadar bölmek için maç kullanır, böylece eşleşmiyor adet almak unutmayın.
Ancak, ben bunu yaparsam:
"matchabc".split(/^(match)/)
Alıyorum:
["", "match", "abc"]
Parantez ben bölme kulüpler şeyi yakalayabilir olmasıdır. Bu biraz da sizin tarif ettiğiniz davranış gibi geliyor - bu sorunu (sadece regex, ama bunu nasıl kullandığınız ve üzerinde davranıyor dize) gösteren bir örnek göndermek olmadığını söylemek daha kolay olurdu.