Ruby 如何在Regexp中捕获某个单词之前的几个单词
从字符串Ruby 如何在Regexp中捕获某个单词之前的几个单词,ruby,regex,Ruby,Regex,从字符串“美妙的两晚、三晚或六晚住宿两餐”中,我想捕获并在单词'night'之前说出5个单词。 在这个例子中,我想得到['fabric'、'two'、'three'、'six'] 我当前使用的是s.scan(/(?:\w+/),它返回标记化数组: [“非常好”、“两个”、“三个”、“或”、“六个”、“晚上”、“住宿”、“两个”、“一起”、“吃饭”] 然后我通过索引找到“夜”这个词。但是我想知道regexp是否也可以完成这一步。您可以使用/(?:\w+\w+{5}(?=night)/获得前面的5个
“美妙的两晚、三晚或六晚住宿两餐”
中,我想捕获并在单词'night'之前说出5个单词。
在这个例子中,我想得到['fabric'、'two'、'three'、'six']
我当前使用的是s.scan(/(?:\w+/)
,它返回标记化数组:
[“非常好”、“两个”、“三个”、“或”、“六个”、“晚上”、“住宿”、“两个”、“一起”、“吃饭”]
然后我通过索引找到“夜”这个词。但是我想知道regexp是否也可以完成这一步。您可以使用
/(?:\w+\w+{5}(?=night)/
获得前面的5个单词,它返回“难以置信的2、3或6”
。然后,您可以继续将其拆分为单词(不知道如何将它们放在同一个正则表达式中)。只需在扫描中添加正向前瞻,以确保单词“night”如下所示:
s.scan(/(?:\w+)(?=.*night)/)
#=> ["Fabulous", "two", "three", "or", "six"]