代码之家  ›  专栏  ›  技术社区  ›  Sam å±±

正则表达式去除除单词以外的所有内容

  •  2
  • Sam å±±  · 技术社区  · 15 年前

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

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

    如何从文本块中剥离除由空格分隔的单词之外的所有内容?其他一切都被扔进垃圾桶。

    多亏了帕维尔,这个很好用 .split(/[^[:alpha:]]/).uniq!

    2 回复  |  直到 15 年前
        1
  •  3
  •   Community Mohan Dere    8 年前

    我认为最适合你的是把这根绳子分成几个字。在这种情况下, String::split 函数是更好的选择。它接受一个与子字符串匹配的regexp,它应该 将源字符串拆分为数组元素 .

    在您的情况下,它应该是“一些非字母字符”。字母的 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"]
    
        2
  •  0
  •   ennuikiller    15 年前

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