替换文本中多个单词的有效方法

hoj*_*oju 11 javascript regex performance text

使用JavaScript我需要从~100000个单词文档中有效地删除~10000个关键字,其中〜1000个是关键字.你会建议什么方法?

将一个巨大的正则表达式是可行的?或者我应该只是遍历文档字符寻找关键字(无聊)?

编辑:
好点 - 只有整个单词,而不是部分.有些关键字包含空格.
我试图在客户端做到这一点,以减轻后端的压力.

Emi*_*nov 6

使用正则表达式可能是一个不错的选择:

var words = ['bon', 'mad'];
'joe bon joe mad'.replace(new RegExp('(' + words.join('|') + ')', 'g'), '');
// 'joe  joe  '
Run Code Online (Sandbox Code Playgroud)

正则表达式1并不是非常复杂的事情,如前瞻,regexp引擎是用C/C++编写的,所以你可以期待它非常快.然而 - 基准并看看性能是否符合您的需求.

我不认为实现自己的解析器会更快,但我可能错了 - 基准测试.

将文档发送到服务器对我来说听起来不是很好.使用100k字时,您正在查看兆字节范围内的有效负载,并且您仍需要在服务器上执行某些操作并将其推回.


1您可能需要调整正则表达式以对空格执行某些操作.