`[]` Bir regex'te ne yapar?


0

Bu web sayfası içeren çok sayıda regex içeriyor []:

http://mmcif.wwpdb.org/dictionaries/ascii/mmcif_pdbx_v40.dic

Bir örnek:

[][_,.;:"&<>()/\{}'`~!@#$%A-Za-z0-9*|+-]*

Sayfa, kullanılan regexlerin belirli bir tadı ile ilgili şu yorumu sağlar:

Burada tanımlanan normal ifadeler uyumlu değil   POSIX 1003.2 standardı ile birlikte   '\ n' ve '\ t' özel karakterleri. Bu düzenli ifadeler   Richard Stallman'ın 0.12 sürümü kullanılarak test edilmiştir.   POSIX modunda GNU düzenli ifade kütüphanesi.

Ne yapar [] anlamına gelmek?

Yanıtlar:


2

Desenler kaçma ihtiyacını önlemek için bu şekilde yazılmıştır. ] Tanımlanan karakter sınıfındaki karakter (ve ayrıca tire).

Kaçışsız, ] karakter sınıfını kapatır. Ancak, izlerseniz [ hemen ]“kapanış köşeli parantez” in karakter sınıfına dahil edileceğini belirten özel bir yapıdır.

Benzer şekilde, bir kez karakter karakterini açtığınızda [, daha fazla kullanımı [ "iç içe karakter sınıflarına" izin verilmediğinden, karakter sınıfına 'açılış köşeli ayraç' eklendiğini gösterir.

Kısa çizginin konumu ( - ) sınıf tanımının en sonunda, özel bir kullanım durumudur, aksi halde karakter sınıfında kısa çizgi kullanımı, sınıfa dahil edilecek bir dizi karakteri temsil eder.

Böylece, Regex motoru örnek kalıbınızı şu şekilde ayrıştırır:

[ {open the character class}
] {include closing bracket}
[_,.;:"&<>()/\{}'`~!@#$%A-Za-z0-9*|+ {include a bunch of characters; [().*{}|+, etc. are not special characters within a class definition}
- {include hyphen}
] {close the character class}
* {zero or more repetitions of the class}

1

Açılı köşeli ayraç hemen izlenirken, kapama bir sadece kendisi anlamına gelir ]. Bir sonraki açılış köşeli ayraç aynı zamanda sadece kendi karakteri anlamına gelir [.

$ echo "a[b" | grep '[]]'
$ echo "a[b" | grep '[[]' 
a[b
$ echo "a[b" | grep '[]'  
grep: Unmatched [ or [^

0

Bildiğim kadarıyla, [] hiçbir şey ifade etmiyor, parantez aralıklarını tanımlamak için parantez kullanılıyor. Boş bir aralık hiçbir şey ifade etmez.

Şimdi, bağlantınızdaki değişiklik günlüğüne bakın ...

1.048 2007-11-18

Değişiklikler: (jdw / kh)

  • veri türleri kodu ve ucode için izin verilen karakterlere '[]' ekleyin -
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.