正则表达式除了单词之外的所有内容

时间:2010-08-21 19:44:00

标签: ruby regex strip words

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

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

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

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

2 个答案:

答案 0 :(得分:3)

我认为最适合你的是将字符串分成单词。在这种情况下,String::split函数将是更好的选择。它接受匹配子字符串的正则表达式,它应该将源字符串拆分为数组元素

在您的情况下,它应该是“一些非字母字符”。字母character class[:alpha:]表示。所以,这是你需要的例子:

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

您可以使用仅包含英语单词的数组intersecting the resultant array进一步过滤结果:

irb(main):001:0> ["asd", "er", "w", "we", "wZr", "fq"] & ["we","you","me"]
=> ["we"]

答案 1 :(得分:0)

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