我希望捕获的字符串"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是否也可以完成这一步。
答案 0 :(得分:2)
只需在扫描中添加一个正向前瞻,以确保“夜晚”一词如下:
s.scan(/(?:\w+)(?=.*night)/)
#=> ["Fabulous", "two", "three", "or", "six"]
答案 1 :(得分:1)
您可以使用/(?:\w+\W+){5}(?=night)/
获取前5个字,返回"Fabulous two, three, or six "
。然后,您可以继续将其拆分为单词(无法弄清楚如何将它们放在同一个正则表达式中)。