假设我想找到给定字符串中以b开头并以ing结尾的所有单词。但是,我只想返回部分内容 在ing之前的词。因此,如果这个词是拯救,我应该只 匹配并返回保释金。
下面的Ruby正则表达式肯定会匹配:
\bt[a-zA-Z]*ing\b
但它并没有只返回"保释"一部分。我可以使用某种前瞻或后瞻性断言吗?如果没有,在Ruby中这样做的好方法是什么?
答案 0 :(得分:0)
words = "booster bailings balling failing"
words.scan /(?<=\b)b\w*?(?=ing\b)/
#⇒ ["ball"]
答案 1 :(得分:0)
以下是提取所需信息的两种方法。
str = "blathering fumbling blinging bérgering blings"
str.scan(/\bb[[:alpha:]]*(?=ing\b)/)
#=> ["blather", "bling", "bérger"]
str.scan(/\b(b[[:alpha:]]*)ing\b/).flatten
#=> ["blather", "bling", "bérger"]
,而
str.scan(/\bb[a-zA-Z]*(?=ing\b)/)
#=> ["blather", "bling"]