我对正则表达式无能为力,所以请帮我解决这个问题。
基本上我正在下载网页和RSS订阅源,并希望删除除普通单词之外的所有内容。没有句号,逗号,if,ands和buts。从字面上看,我有一个英语中最常用的单词列表,我也想删除它们,但我想我知道如何做到这一点,不需要正则表达式,因为它真的很长。
除了用空格分隔的单词外,如何从一大块文本中删除所有内容?其他一切都在垃圾桶里。
这要归功于Pavel .split(/[^[:alpha:]]/).uniq!
答案 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
来匹配整个单词