正则表达式用于在不同情况下检查相同的单词

时间:2016-08-07 19:01:16

标签: python regex node.js

我希望为一个(希望)简单的项目编写一些代码。我所拥有的是纯文本文档。可以说它包含两个句子:

  

编码很有趣。我喜欢编码。

我想要的是一种阅读文件并查看单词$(document).ready(function() { $(window).resize(function() { if(isMenuVisible() == true){ $('#my-nav').removeClass('navbar-fixed-bottom'); $('#my-nav').addClass('navbar-fixed-top'); $('body').css('padding-top', '50px'); } else{ $('#my-nav').removeClass('navbar-fixed-top'); $('#my-nav').addClass('navbar-fixed-bottom'); $('body').css('padding-top', '0'); } }) ; }); Coding相同的方法。因此,基本上阅读这些单词,并说无论使用何种情况,单词coding都有两个实例。这可能吗? 我所知道的只是我的python日的正则表达式,但我正在学习MEAN堆栈所以任何Javascript / NodeJS都会很棒。

我没有要求别人编写代码,我只需要一些指导,以便查找内容或者有更好的方法在JavaScript中执行此操作。

我给出的示例中的返回值理想情况下为2.我只需要它来计算实例。

2 个答案:

答案 0 :(得分:1)

您可以在纯JavaScript中执行此操作,并使用正则表达式检查单词counting。您可以在模式的末尾看到igi代表ignore-caseg代表global,这意味着,如果找到一个实例,它会停止查看,但会返回所有找到的实例。

如果句子与模式不匹配,则脚本将导致错误,因为不匹配模式的null返回值。如果前一个表达式为|| [],则null检查,并且只有在coding时才执行。这样,它不会在不匹配的情况下抛出错误,而是返回0。

编辑:正如评论中所述,decoding可以是\b等其他字词的一部分。为防止错误匹配,您还可以匹配单词边界(var sentence = "Coding is fun. I enjoy coding."; var count = (sentence.match(/\bcoding\b/ig) || []).length; console.log(count); )。我在代码中添加了这些内容。

{{1}}

信用证转到:https://stackoverflow.com/a/4009768/3233827

答案 1 :(得分:0)

这是一个Python解决方案:

import re

string = """
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
"""

words = {}

rx = re.compile(r'\b\w+\b')

for match in rx.finditer(string):
    word = match.group(0).lower()
    if word not in words.keys():
        words[word] = 1
    else:
        words[word] += 1

print(words)

<小时/> A&#34;字&#34;定义为\b\w+\b,即由单词边界包围的单词字符。它会输出带有计算单词的词典,请参阅a demo on ideone.com