2014-09-25 2 views
0

В настоящее время я использую следующий RegEx в своем javascript для сопоставления и подсчета слов в строке. Это работает Perfekt с этим ReEx:Регулярное выражение: совпадение слова или фразы

RegEx:

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

Ключевое слово: красивый

Строка: Красивое дерево в саду. В саду красивое дерево.

Выход:

  • The: 4
  • красивый: 2
  • дерево: 2
  • сад
  • в: 2

Теперь, я также хочу совместить фразы (точно). Напр.

Ключевое слово или фраза: красивое дерево

Строка: Красивое дерево в саду. В саду красивое дерево. Дерево модели красиво распродано.

Выход:

  • The: 4
  • красивое дерево: 2
  • дерево: 1
  • красиво: 1
  • сад
  • в: 2

Я не очень уверен в работе с 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

+0

Я должен вернуться снова: как я могу избежать того, что она соответствует пробелам. , и т. д., а также расщепление слов с немецкими умлаутами ü, ä, ö.В исходном регулярном выражении, пробелы, точки и запятые были проигнорированы и включены слова с немецкими умлаутами. Спасибо за вашу помощь – mm1975

Смежные вопросы