正则表达式除了单词之外的一切

我对正则表达式无能为力,所以请帮助我解决这个问题。

基本上我正在下载网页和RSS订阅源,并希望除了简单的单词之外删除所有内容。 没有句号,逗号,if,ands和buts。 从字面上看,我有一个英语中最常用单词的列表,我也想删除它们,但我想我知道如何做到这一点,并且不需要正则表达式,因为它真的很长。

除了用空格分隔的单词之外,如何从一大块文本中删除所有内容? 其他一切都在垃圾桶里。

这要归功于Pavel .split(/[^[:alpha:]]/).uniq!

我认为最适合你的是将字符串分成单词。 在这种情况下, 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"] 

尝试\b\w*\b匹配整个单词