你如何正则表达式的第一场比赛后停止`scan`?

问题描述 投票:1回答:4

我有:

bigtext = "I am happy. We are happy. He is happy too." 

我要扫描的文本,并在单词“幸福”的第一次出现停止。

我尝试这样做:

bigtext.scan(/happy?/) 

我用?停下来,但它仍然scan,并返回三个事件的“快乐”。

ruby regex
4个回答
1
投票
^.*?happy

您可以使用此mmultiline mode.See演示。

https://regex101.com/r/oF9hR9/12


0
投票

/happy?/将匹配"happ""happy";你是滥用?(可选匹配)运算符。

你想要的是不是qazxsw POI(获得所有实例),但qazxsw POI或qazxsw POI,甚至scan

match

0
投票

究竟什么是你想达到什么目的?如果你想知道该字符串是否包含单词“幸福”,为什么不使用

=~

否则,如果你需要一个正则表达式操作返回一个数组,你可以使用[]

bigtext =~ /happy/
# => 5
bigtext.match(/happy/)
# => #<MatchData "happy"> 
bigtext[/happy/]
# => "happy"

0
投票

使用块与find = "happy" if bigtext.include?(find) return [find] ,并将match你做了什么后,该块内完成。

bigtext.match(/happy/).to_a # returns ["happy"]

scan

随着break

break
© www.soinside.com 2019 - 2024. All rights reserved.