2013-06-17 29 views
5

Bir proje için Node.js kullanıyorum ve Javascript'in regex sözdizimini çok sınırlayıcı olarak görüyorum. Özellikle de bakma eksikliği beni öldürüyor. Dizeleri cümle haline getirmek için regex kullanmaya çalışıyorum ama Bay ve Bayan gibi ortak kısaltmaları kontrol etmek istiyorum, böylece cümleleri kırmam. Onların regex özelliklerini ekleyen bir Node.js kütüphanesi var mı, yoksa iyi bir hareket tarzı ne olurdu? Bu javascript regexes ile zorluk varNode.js'de daha iyi regex uygulaması yolu

+0

'npm arama regex'. veya: https://npmjs.org/search?q=regex –

+0

http://xregexp.com/, Node.js ile çalışır, ancak, alas, lookbehind iddialarını sunamaz. –

cevap

1

Düğüm: Daha fazla püf noktaları için

/((?:Mrs?\.)|[^\.]+)+/ # match all that is not a dot or Mr. or Mrs. 

, bu sitede bir göz alabilir .js, v8 motoruna dayanır ve regex motoru, v8'in bir parçasıdır. V8 projesi burada barındırılıyor: https://code.google.com/p/v8/. Normal ifade motoru şu dosyadan gelir: https://code.google.com/p/v8/source/browse/trunk/src/ia32/regexp-macro-assembler-ia32.cc?r=4966. Asıl çatalımda projeyi yapabilir ve istenen özellikleri ekleyebilirsiniz. Bunun, değerinden daha fazla çaba göstereceğinden şüpheleniyorum.

Düzenli ifadeler genellikle ayrıştırma için tasarlanmamıştır. Node.js için burada bulunan birçok ayrıştırma kütüphanesi vardır: https://npmjs.org/search?q=language+parsing. Ben şahsen kendim yaptım ve benim amaçları için mükemmel çalıştı sıcak kakao (https://github.com/olleicua/hot-cocoa) tavsiye ederim. amacınız ise ilki ise

Sonunda sadece sonra böyle bir şey işe yarayabilecek 'Mr' veya 'Bayan' Herhangi tek bir kelime veya iki kelime maç için:

var text = 'Mr Potter and Mrs Smith were walking to the house of Mrs Sullivan'; 
text.match(/(?:Mr |Mrs)?\w+/g); 
// returns: [ 'Mr Potter', 'and', 'Mrs Smith', 'were', 'walking', 'to', 'the', 
//   'house', 'of', 'Mrs Sullivan' ]