簡體   English   中英

在Node.js中實現更好的正則表達式的方法

[英]Way to implement better regex in Node.js

我正在使用Node.js作為項目,我發現Javascript的正則表達式語法非常有限。 特別是缺乏外觀是殺了我。 我正在嘗試使用正則表達式將字符串解析為句子,但我想檢查常見的縮寫,例如先生和太太。這樣我就不會破壞句子。 他們的Node.js庫是否添加了正則表達式功能,如果不是,那么一個好的行動方案是什么?

這是javascript正則表達式的難點,

一種避免特定問題的方法:

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

有關更多技巧,您可以查看此站點: http//blog.stevenlevithan.com/archives/javascript-regex-lookbehind

Node.js基於v8引擎,它的正則表達式引擎是v8的一部分。 v8項目位於此處: https//code.google.com/p/v8/ 正則表達式引擎來自此文件: https//code.google.com/p/v8/source/browse/trunk/src/ia32/regexp-macro-assembler-ia32.cc?r = 4966 您可以在原則上分叉項目並添加所需的功能。 我懷疑這會比它的價值更多。

正則表達式通常不是為解析而設計的。 Node.js有很多解析庫,可以在這里找到: https ://npmjs.org/search?q = language + parsing。 我個人推薦hot-cocoa( https://github.com/olleicua/hot-cocoa ),因為我自己做了它,它完全符合我的目的。

最后,如果你的目標是匹配任何一個單詞或兩個單詞,如果第一個單詞是'Mr'或'Mrs',那么這樣的東西可能會起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM