Nasıl bir regex '{{}} *********' tüm maçlar bulabilirim?

2 Cevap php

Ben (bir etiketi gibi, arama anahtar kelimeleri olacak) bazı metin parçaları etrafında {{ve}} kullanımına izin PHP Markdown genişletmek için çalışıyorum.

Ben tür işleri bu temel regex var:

preg_match_all("/\{\{(.*)\}\}/", $description, $nomsTags);

Bu 2 keywords aynı cümlede olduğunda çalışmaz hariç:

This {{is}} just an {{example}}.

Bu '{{is}} just an {{example}}' yerine '{{is}}' döner ve '{{example}}'.

Her iki durumda çalışır, böylece nasıl regex değiştirebilir?

2 Cevap

Nicelik açgözlü vardır. Bu metilheksadesil etoksilat ekspresyonu mümkün tekrar maksimum genişletilmiş olduğu anlamına gelir. Nicelik bir ? ekleyerek yerine açgözlü olmayan nicelik deneyin:

/\{\{(.*?)\}\}/

Bunun yerine. Eğer kullanabilirsiniz [^}].