如何在正则表达式中的某个单词之前捕获几个单词

时间:2012-01-19 10:16:59

标签: ruby regex

我希望捕获的字符串"Fabulous two, three, or six night Stay For Two With Meals"在单词 'night' 之前说出5个单词。 在此示例中,我想获得['Fabulous', 'two', 'three', 'or', 'six']

我目前正在使用s.scan(/(?:\w+)/)返回标记化数组:

["fabulous", "two", "three", "or", "six", "night", "Stay", "For", "Two", "With", "Meals"]

然后我通过它索引找到'night'这个词。但是我想知道regexp是否也可以完成这一步。

2 个答案:

答案 0 :(得分:2)

只需在扫描中添加一个正向前瞻,以确保“夜晚”一词如下:

s.scan(/(?:\w+)(?=.*night)/)

#=> ["Fabulous", "two", "three", "or", "six"]

答案 1 :(得分:1)

您可以使用/(?:\w+\W+){5}(?=night)/获取前5个字,返回"Fabulous two, three, or six "。然后,您可以继续将其拆分为单词(无法弄清楚如何将它们放在同一个正则表达式中)。