Basit Regex - mantık yardım bir dize değil, karakter sınıfı gibi maç için gerekli

0 Cevap php

Ben aşağıdaki örnek şablon kodu var.

{# @T('core.layout:Logged in as {0} {1}', @user('firstname'), @user('lastname')) #} {# VAR_TEST #}

Ve aşağıdaki regex etiketleri için ayrıştırmak için kullanılan

/{# (\@)?(([A-Z][^#}]+)|(([a-zA-Z0-9\_]+)?\(([^#}]*)\))) #}/

Nedeniyle sadece ilk etiketi yakın kaşlı (}) son etiketi eşleşir ancak. Ben regex uzman ve böylece sorun yok değilim. Ben #} desen, yani [^ #}] hariç her karakter kullanarak Tag Yakın # sonra bir şey} eşleşen etiketleri durdurarak eşleşen sınırlamak için çalışılıyor. Ancak bu tek karakterleri ve bir bütün olarak değil #} dize eşleştirme.

Size nasıl her şeyi karşılayan bir regex yazmak ama bir dize değil, karakter sınıfı modunda?

Fyi, regex lezzet PHP ve preg_match olduğunu.


1 düzenlemek;

Yani maç gerekir

{# @T('core.layout:Logged in as {0} {1}', @user('firstname'), @user('lastname')) #}

ve

{# VAR_TEST #}

aynı regex. Ancak ilk test maçı daha sonraki bir noktada daha regexes ile bozuldu çok karmaşık etiketini gösterir.

0 Cevap