2012-01-19 61 views
2

從我想要捕捉的字符串"Fabulous two, three, or six night Stay For Two With Meals"說一句話「夜」前5個詞語。 在這個例子中,我想['Fabulous', 'two', 'three', 'or', 'six']如何捕獲某個詞的前幾句正則表達式

我目前使用s.scan(/(?:\w+)/)返回標記化陣列來獲得:

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

,然後我通過索引它來查找單詞之夜「。但是我想知道如果regexp也可以完成這一步。

回答

2

一個簡單的正向前查找添加到您的掃描,以確保這個詞「夜」如下:

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

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

您可以通過使用/(?:\w+\W+){5}(?=night)/得到前面的5個單詞,它返回"Fabulous two, three, or six "。然後你可以繼續將它分解成單詞(無法弄清楚如何將它們放在同一個正則表達式中)。