Düzenli ifadeler yazmak için bir ayrıştırıcı
Hatta programlama yıllar sonra, bir daha asla tamamen düzenli ifadeler kavramış olduğumu söylemeye utanıyorum. Genel olarak, ne zaman bir sorun aramaları için bir düzenli ifade, ben genellikle (sonra bir sürü atıfta için sözdizimi) gelmek ile ilgili olarak uygun bir, ama teknik olarak buluyorum kendimi kullanarak giderek daha sık.
Bu yüzden, kendimi eğitmek ve düzenli ifadeler anlamak içindoğruBir şeyler öğrenmeye çalışırken , ben her zaman yaptığım şeyi yapmaya karar verdim; yani, muhtemelen yeterince öğrendim hissediyorum en kısa sürede terk edeceğim bu iddialı bir şey yazmak için deneyin
Bu amaçla, Python regular expression parser yazmak istiyorum. Bu durumda, "yeterli Perl genişletilmiş düzenli ifade sözdizimi tamamen anlayabileceği bir ayrıştırıcı uygulamak istiyorum" anlamına gelir. Ancak, en verimli çözümleyici olmak zorunda yoksa bile mutlaka gerçek dünya olarak kullanılabilir değil. Sadece doğru veya bir dize içinde bir desen eşleşmesi için maç başarısız.
Soru, nereden başlayayım? Ben yukarıdaki diyagram ayrıştırılır ve ayrı bir şekilde sonlu durum otomat içerir gerçeğinden nasıl yorumladığı hakkında neredeyse hiçbir şey bilmiyorum. Oldukça zor bu sorun nasıl yaklaşılması için herhangi bir öneriniz çok takdir olurdu.
DÜZENLEME:Ben yokken bunu açıklığa kavuşturmalıdıruygulamakPython düzenli çözümleyici örnekleri ya da makaleler yazıyor ne aşırı gürültü patırtı değilim. Brainfuck değil sürece, muhtemelen bu değer yapmak için yeterince anlayamayacağım.
CEVAP
Normal ifade motorunun bir uygulama yazmak gerçekten oldukça karmaşık bir iştir.
Ama eğer gerçekten bunu uygulamak için detaylar hakkında yeterli olabilir bile, bunu yapmak için nasıl ilgileniyorsanız, en azından bu makale bakmak tavsiye ederim:
Popüler programlama dillerinin pek çoğu bazı düzenli ifadeler için çok yavaş bir şekilde düzenli ifadeler uygulamak nasıl açıklar, ve daha hızlı olduğundan biraz farklı bir yöntem açıklar. Madde içeren bazı detayları nasıl önerilen uygulama çalışmaları da dahil olmak üzere bazı kaynak kodu C olabilir biraz ağır okuma eğer sadece başlangıç için öğrenmek düzenli ifadeler, ama bence değer bilmek arasındaki fark bu iki yaklaşım.
Düzenli ifadeler, iç içe geçmiş desen ...
C# kullanarak düzenli ifadeler HTML et...
Düzenli İfadeler Java Değeri Ayıklamak...
Birden çok dilde düzenli ifadeler için...
Düzenli İfadeler için en kötü Durum An...