2016-08-07 22 views
-1

我期待为(希望)简单项目编写一些代码。我拥有的是一个纯文本文件。可以说它包含两个句子:用于在不同情况下检查相同单词的正则表达式

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

我想要的是一种阅读文件的方法,看他的文字Codingcoding是一样的。所以,基本上阅读这些单词并且说,无论使用何种情况,都有两个单词coding。这可能吗? 我所知道的是从我的python天正则表达式,但我正在学习平均值堆栈,所以任何Javascript/NodeJS将是伟大的。

我不是要求别人写代码,我只是需要一些指导来寻找什么,或者是否有更好的方法在JavaScript中做到这一点。

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

+1

不需要正则表达式。只需阅读整个文件并将其转换为相同的大小写。为什么Python标签,如果你期望JS的答案? – DeepSpace

+0

你可能会找到答案[here](http://stackoverflow.com/questions/3939715/case-insensitive-regex-in-javascript)! – csabinho

回答

1

你可以用纯正的JavaScript做这个,用正则表达式检查单词counting。您可以在模式结尾处看到igi代表ignore-caseg代表global,这意味着,如果它找到一个实例,但它返回所有找到的实例,它不会停止查找。

如果句子与模式不匹配,则由于不匹配模式的返回值,脚本将导致错误。 || []检查,如果前面的表达式是null并且只有在它如此时才执行。通过这种方式,它不会引发错误在一个无与伦比的局面,而是返回0

编辑:由于在评论中提到的,coding可以像decoding一个单词的一部分。为了防止错误匹配,您还可以匹配单词边界(\b)。我将这些添加到代码中。

var sentence = "Coding is fun. I enjoy coding."; 
var count = (sentence.match(/\bcoding\b/ig) || []).length; 
console.log(count); 

幸得:https://stackoverflow.com/a/4009768/3233827

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 “字” 被定义为 \b\w+\b,即通过单词边界包围字字符。它输出一个字典与计数字,见 a demo on ideone.com

相关问题