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
risposta
E 'la difficoltà con JavaScript regex,
Un modo per evitare il problema specifico:
/((?:Mrs?\.)|[^\.]+)+/ # match all that is not a dot or Mr. or Mrs.
Per ulteriori trucchi, si può dare un'occhiata a questo sito: http://blog.stevenlevithan.com/archives/javascript-regex-lookbehind
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' ]
- 1. Discussione: il modo migliore per implementare una chat room con node.js/socket.io?
- 2. REGEX, il modo migliore per imparare è
- 3. Il modo migliore per implementare una "pagina infinita" nei binari?
- 4. Il modo migliore per implementare RKReachabilityObserver in RestKit
- 5. Il modo migliore per implementare il voto in un'applicazione Rails?
- 6. Il modo migliore per implementare i parametri in JavaScript?
- 7. Il modo migliore per implementare l'hashing delle chiavi parziali
- 8. Il modo migliore per implementare un'azione di commutazione RESTful?
- 9. Il modo migliore per implementare multi-linguaggio PHP
- 10. Il modo migliore per archiviare i gruppi JS Regex nell'array?
- 11. Il modo migliore per implementare la riproduzione del gioco?
- 12. Il modo migliore per implementare il modello di repository?
- 13. Il modo migliore per usare MongoDB con Node.js?
- 14. qual è il modo migliore per implementare hashCode()?
- 15. Esiste un modo migliore per implementare questo codice MATLAB?
- 16. Qual è il modo migliore per implementare un'autenticazione basata su token per restify.js?
- 17. Esiste un modo migliore per implementare un metodo di rimozione per una coda?
- 18. Qual è il modo migliore per implementare una ricerca di testo completo per un'applicazione ASP.NET MVC?
- 19. migliore delimitatore per separare regex multipe
- 20. Java: il modo migliore per implementare una matrice di oggetti di dimensioni dinamiche
- 21. Il modo migliore per implementare le relazioni di collegamento per HATEOAS in XML?
- 22. C'è un modo per precompilare una regex in Perl?
- 23. Come implementare Node.js in un'applicazione Ionic/Angolare?
- 24. Come implementare un REGEX in Python
- 25. Qual è il modo migliore per implementare i servizi in background per un'applicazione ASP.NET?
- 26. Il modo migliore per implementare il supporto per i plug-in
- 27. C'è un modo per regexp-quotare una stringa in Node.js?
- 28. Modo conciso per implementare round() in C?
- 29. Qual è il modo migliore per passare variabili comuni in moduli separati in Node.js?
- 30. Il modo migliore per eseguire il routing dinamico con Express.js (node.js)
'NPM di ricerca regex'. oppure: https://npmjs.org/search?q=regex –
http://xregexp.com/ funziona con Node.js, ma, purtroppo, non è in grado di offrire delle asserzioni. –