如何在JavaScript中解析文本中的单词?

如何在JavaScript中解析文本中的单词?,javascript,Javascript,在文本页面中,我想检查每个单词。什么是最好的方式来阅读每个单词的时间?很容易找到被空格包围的单词,但一旦你开始解析文本中的单词,它就会变得复杂 除了定义我自己从文本中解析单词的方法外,是否已经构建了某种方法,可以用正则表达式或其他方法解析单词 文本中的一些单词示例 word word. word(word) word's word word' "word" .word. 'word' sub-word 看看-你可以定义几乎任何你想要的解析算法。你所说的是。至少可以说,这不是一件小事,也是

在文本页面中,我想检查每个单词。什么是最好的方式来阅读每个单词的时间?很容易找到被空格包围的单词,但一旦你开始解析文本中的单词,它就会变得复杂

除了定义我自己从文本中解析单词的方法外,是否已经构建了某种方法,可以用正则表达式或其他方法解析单词

文本中的一些单词示例

  word word. word(word) word's word word' "word" .word. 'word' sub-word 

看看-你可以定义几乎任何你想要的解析算法。

你所说的是。至少可以说,这不是一件小事,也是各大搜索引擎进行深入研究的主题。在各种服务器端语言中有许多开源标记化库(例如,请参阅斯坦福NLP和Lucene项目),但据我所知,javascript中甚至没有类似的东西。您可能需要滚动自己的:)或者可能需要在服务器端进行处理,并通过AJAX加载结果?

您可以使用:

text = "word word. word(word) word's word word' \"word\" .word. 'word' sub-word";
words = text.match(/[-\w]+/g);
这将为您提供一个包含所有单词的数组

在正则表达式中,
\w
表示
a-z
a-z
0-9
的任何字符
[-\w]
表示
\w
-
的任何字符<代码>[-\w]+表示这些字符中出现1次或更多次的任何字符

如果要将单词定义为上述表达式以外的内容,请在
[-\w]
字符类中添加组成单词的其他字符。例如,如果希望单词也包含
,请将字符类设置为
[-\w()]


要了解正则表达式的介绍,请访问伟大的教程。

我在这里支持Richard的答案,但要补充一点,构建令牌服务器(imho)最简单的方法之一是;一些疯子已经为它建立了一个Javascript目标;因此,您可以在web浏览器中运行和执行语法(请参阅“运行时库”部分)


但我不会假装那里没有学习曲线。

这很好,除非他需要每个匹配的上下文(即括号、连字符等);然后就变得很难了。但是是的,正则表达式确实适用于“单词”:)完美的答案。这是一种幼稚的标记化方法,但在99%的情况下,这就足够了。事实上,如果你需要的不仅仅是提取单词,比如构建自然语言树,那么仅仅使用正则表达式也无济于事。但我得到的印象是OP只需要一系列的单词。。。