2013-06-17 12 views
5

Sto utilizzando Node.js per un progetto e sto trovando la sintassi delle espressioni regolari di Javascript molto limitante. In particolare, la mancanza di lookbehind mi sta uccidendo. Sto cercando di usare regex per analizzare le stringhe in frasi, ma voglio controllare le abbreviazioni comuni come Mr. e Mrs. in modo da non rompere le frasi. È la loro libreria Node.js che aggiunge funzionalità regex e, se no, quale sarebbe una buona linea d'azione?Modo per implementare una regex migliore in Node.js

+0

'NPM di ricerca regex'. oppure: https://npmjs.org/search?q=regex –

+0

http://xregexp.com/ funziona con Node.js, ma, purtroppo, non è in grado di offrire delle asserzioni. –

risposta

1

The Node .js è basato sul motore V8 e il suo motore regex è una parte di v8. Il progetto v8 è ospitato qui: https://code.google.com/p/v8/. Il motore regex proviene da questo file: https://code.google.com/p/v8/source/browse/trunk/src/ia32/regexp-macro-assembler-ia32.cc?r=4966. Si potrebbe in linea di principio il progetto e aggiungere le funzionalità desiderate. Sospetto che questo sarebbe uno sforzo maggiore di quello che vale.

Le espressioni regolari non sono generalmente progettate per l'analisi. Esistono molte librerie di analisi per Node.js che possono essere trovate qui: https://npmjs.org/search?q=language+parsing. Posso personalmente consigliare hot-cacao (https://github.com/olleicua/hot-cocoa) come ho fatto io stesso e ha funzionato perfettamente per i miei scopi.

Infine, se il vostro obiettivo è solo quello di corrispondere a qualsiasi parola o due parole, se il primo è 'Mr' o 'la signora' quindi qualcosa di simile potrebbe funzionare:

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' ] 
Problemi correlati