我对正则表达式无能为力,所以请帮助我解决这个问题。
基本上,我正在下载网页和 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
匹配整个单词