2016-08-07 24 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

相關問題