Регулярное выражение, чтобы раздеть все, кроме слов - PullRequest
2 голосов
/ 21 августа 2010

Я беспомощен в регулярных выражениях, поэтому, пожалуйста, помогите мне в этой проблеме.

В основном я загружаю веб-страницы и RSS-каналы и хочу удалить все, кроме простых слов. Никаких точек, запятых, если, и, и но. Буквально у меня есть список наиболее распространенных слов, используемых в английском языке, и я тоже хочу их обрезать, но я думаю, что знаю, как это сделать, и мне не нужно регулярное выражение, потому что это будет очень долго.

Как мне убрать все из фрагмента текста, кроме слов, разделенных пробелами? Все остальное уходит в мусорное ведро.

Это работает довольно хорошо благодаря Павлу .split(/[^[:alpha:]]/).uniq!

Ответы [ 2 ]

3 голосов
/ 21 августа 2010

Я думаю, что вам больше всего подходит разделение строки на слова.В этом случае лучшим вариантом будет функция String::split.Он принимает регулярное выражение, совпадающее с подстрокой, которое должно разбить исходную строку на элементы массива .

В вашем случае это должны быть "некоторые не алфавитные символы".Буквенный класс символов обозначается [:alpha:].Итак, вот пример того, что вам нужно:

irb(main):001:0> "asd, < er >w , we., wZr,fq.".split(/[^[:alpha:]]+/)
=> ["asd", "er", "w", "we", "wZr", "fq"]

Вы можете дополнительно отфильтровать результат, пересекая результирующий массив с массивом, который содержит только английские слова:

irb(main):001:0> ["asd", "er", "w", "we", "wZr", "fq"] & ["we","you","me"]
=> ["we"]
0 голосов
/ 21 августа 2010

попробуйте \b\w*\b, чтобы соответствовать целым словам

...