SORU
29 Aralık 2008, PAZARTESİ


Özel karakterler, normal ifadelerde kaçtı nasıl olmalıdır?

Eğer '()[]{}|' vb. gibi özel karakterler kaçış olsam hep tahmin etmeye çalışmaktan sıkıldım, regexps birçok uygulamaları kullanırken.

Farklı, örneğin, Python, sed, grep, awk, Perl, Yeniden Adlandır, Apache, bulmak ve korumaktır. Ben gerektiği zaman, ve, özel karakterler kaçmam gerektiği söyleyen herhangi bir kural kümesi var mı? Ancak sisteminizde, POSIX veya genişletilmiş regexps gibi regexp Türüne göre değişir, değil mi?

CEVAP
30 Aralık 2008, Salı


Ve gerçekten kaçış etmemelisin hangi karakter ile çalıştığını düzenli lezzet bağlıdır.

/ İçin, ve diğer birçok sözde Perl-uyumlu tatlar, kaçış karakteri bu sınıfları dışında:

.^$* ?()[{\|

ve bu karakter sınıfları içinde:

^-]\

POSIX yukarıdaki diyagram (ERE) genişletilmiş için, bunlar dışında karakter sınıfları (/gibi) kaçış:

.^$* ?()[{\|

Diğer karakterler kaçış POSIX ERE ile ilgili bir hata.

Karakter sınıfları içinde, eğik çizgi POSIX düzenli ifadeler literal bir karakter. Olamaz öyle bir şey kaçmak için kullanın. "Eğer karakter sınıfı eklemek istiyorsanız rakamları. olarak meta "akıllı yerleştirme kullanmak zorunda Her yerde başlangıçta^, koy ] başında, - başlangıç veya sonu karakteri tam anlamıyla bu maç için sınıf, ör:

[]^-]

POSIX temel düzenli ifadeler (BRE), bu anlamları bastırmak için kaçış için gereken meta:

.^$*

BREs parantez ve süslü parantez kaçan onlara özel bir anlam çıkmamış sürümlerini EREs içinde verir. Bazı uygulamalar (örneğin GNU) da kaçınca diğer karakterler, \ gibi özel bir anlam veriyor? ve . Bir karakteri dışında kaçıyor .^$*(){} normalde BREs ile ilgili bir hata.

Karakter sınıfları içinde, BREs EREs aynı kural izleyin.

Eğer bütün bu baş döndürücü, RegexBuddy bir kopyasını alın. Sekmesinde, Ekle Token, ve o zaman o gerçek Oluşturun. RegexBuddy gerektiği gibi kaçar katacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007