Regex, tek tırnak veya çift tırnak

3 Cevap php

Ben bu regex var:

preg_replace(
    '/\["'.$key.'"\] = (.+?);/is', '["'.$key.'"] = '.$newValue.';',
    $contents);

Bu bir yapılandırma dosyasında bir dizi değeri yazar. Ben dizi tuşu çevresinde tek veya çift tırnak izin gerekiyor ve ben bunu nasıl emin değilim. Ben bu regex yazmadım.

3 Cevap

Sen tırnak her iki türlerini maç "bulmak" regex yerini alabilir:

'/\[[\'"]'.$key.'[\'"]\] = (.+?);/is'

Bu hatta maç olacak:

["MegaKey'] = UberValue;

Ve ben olsaydım, ben regexes olmadan yeniden şeyler listesinde bu yapılandırma dosyasını koymak istiyorum.

/'a'|"a"/, tırnak içinde ne çoğaltarak, çok iyi böyle içindeki tek çıkmamış bir tek teklifi izin vermemek gibi (biraz farklı olabilir ama: Birden fazla alıntı stilleri işlemek için her zamanki gibi onları büyü için dizgedir.

'/\[("'.$key.'"|\''.$key.'\')\] = (.+?);/is'

Ayrıca, bazen, bir geri başvuruyu kullanabilirsiniz:

'/\[([\'"])'.$key.'\\1\] = (.+?);/is'

Peki, kullanılan tırnak doğru set maç için geri başvuran yapabilirsiniz (çift ile açılan, çift ile kapalı)

preg_replace(
    '/\[([\"\']+)'.$key.'\\1\]\s=\s(.+?);/is', '[\\1'.$key.'\\1] = '.$newValue.';',
    $contents);

\\1 kullanılan alıntının ilk tip maçları