Neden bu kadar çok düzenli ifade varyantı var? [kapalı]


14

Bugün projemizin kaynak kodunu incelediğimde, her satırın sonunda birçok gereksiz "boşluk" ve "sekme" olduğunu gördüm. Bu yüzden onları düzenli ifadelerle silmeye karar verdim.

Ancak, komutun sed -i '/\s+$/d'çalışmadığını gördüm . Komutu olarak değiştirene kadar see -ri '/\s+$/d', bu benim beklentim gibi davrandı. El kitabından, genişletilmiş regexp çağırıyor seddedi -r.

Kafam karıştı, neden bu kadar çok regexp varyantı var? Vim / emacs / perl / sed regexp gibi. Normal ifade neden benzersiz bir kullanıcı arayüzü sunamıyor?

Yanıtlar:


19

Tarihsel nedenlerden dolayı. "Normal ifade" sözdiziminin tek bir tanımı yoktur. Normal bir ifade kavramının kendisinin resmi olarak tanımlayan gerçek sözdizimi ile ilgisi yoktur. İnsanlar aynı şeyi söylemenin farklı yollarını, dolayısıyla farklı regex sözdizimi stillerini geliştirdiler.

Ancak, bu günlerde çoğunlukla iki tanım grubu olduğunu göreceksiniz:

  1. Temel (BRE) ve Genişletilmiş Düzenli İfadeleri (ERE) belirten POSIX normal ifadeleri . Örneğin, Temel Normal İfadeler\( \)bir grubu belirtmek için kullanılırken Genişletilmiş Normal İfadeler( )bunun içinkullanılır.

  2. Perl tabanlı düzenli ifadeler . Perl düzenli ifadeleri, örneğin ters eğik çizginin her zaman alfasayısal olmayan bir karakterden kaçacağı daha tutarlı bir sözdizimi tanımlar. Perl regex sözdizimi, Java'dan Ruby'ye bugünlerde birçok popüler programlama dilinde bulunmaktadır.

Daha fazla bilgi için normal ifade sözdizimi hakkındaki Wikipedia makalesine göz atabilirsiniz .

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.