2014-09-25 1523 views
0

当前,我在我的javascript中使用以下RegEx来匹配和计算字符串中的单词。 与此ReEx工作PERFEKT:正则表达式:匹配单词或短语

正则表达式:

var pickRegExp = /[^\W\d]+[\u00C0-\u017Fa-zA-Z'](\w|[-'](?=\w))*/gi; 

关键字:美丽

字符串:花园里的美丽的树。在花园里是美丽的树。

输出:

  • 的:4
  • 美丽:2
  • 树:2
  • 花园
  • :14:

现在,我想要匹配的短语(完全)。对于例如

关键字或短语:美丽的树

字符串:美丽的树在花园里。在花园里是美丽的树。美丽的模型树已经售罄。

输出:

  • 的:4
  • 美丽的树:2
  • 树:1
  • 美丽:1个
  • 花园
  • :14:

我对RegExp并不是很坚定。你有任何提示给我吗?谢谢

回答

1

什么

/\b(Beautiful tree|..*?)\b/gi 

即逻辑或精确匹配和通用字匹配正则表达式之间?

s = ("The beautiful tree in the garden. In the garden is " + 
    "the beautiful tree. The model tree beautiful is sold out."); 
result = {} 
s.match(/\b(Beautiful tree|..*?)\b/gi).forEach(function(x) { 
    result[x] = (result[x]|0) + 1; 
}); 

{ " ": 15, 
    ". ": 2, 
    "In": 1, 
    "The": 2, 
    "beautiful": 1, 
    "beautiful tree": 2, 
    "garden": 2, 
    "in": 1, 
    "is": 2, 
    "model": 1, 
    "out": 1, 
    "sold": 1, 
    "the": 3, 
    "tree": 1 } 
+0

应了那句完全匹配。单词不同的顺序或单独的词组也应该匹配 – mm1975 2014-09-25 06:43:30

+0

我必须再次回来:我怎样才能避免它匹配空白,。 ,等等,还有用德语变音词ü,ä,ö分开的单词。在原始的正则表达式中,空格,分数和逗号被忽略,并且包含了带有德语变音符号的单词。谢谢你的帮助 – mm1975 2014-09-25 08:32:30