gpt4 book ai didi

ruby - 用正则表达式数猫

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:50 24 4
gpt4 key购买 nike

所以我想多次匹配其中包含“cat”一词的字符串,例如:

"cat cat cat cat cat"

"cat   cat cat  cat"

如果除了“猫”或空格之外还有其他任何东西,我不想匹配。所以我可以这样做:

^(cat\s*)+$

但是,我想找出字符串中出现了多少只猫。一种方法是计算组的数量,但是上面的正则表达式只会给我一个包含第一只猫的组,而不是每只猫的捕获量。有没有办法使用正则表达式来做到这一点?

最佳答案

我没有看到有人提到我认为显而易见的答案,使用 String#scan:

str = "cat cat cat    catcat"
str.scan('cat').size #=> 5

如果您只是使用正则表达式:

str.scan(/cat/).size #=> 5

如果您只想捕获唯一的而不是同时出现的事件:

str.scan(/\bcat\b/).size #=> 3

编辑:

@sawa 指出对 OP 的问题存在(相当大的)误解空间。这涵盖了如果 cat"" 之外的内容在字符串中,OP 不希望进行搜索的情况。

str.scan('cat').size if str.gsub(/(?:cat| )+/, '').empty? #=> 5

我之前部分中的其他变体仍然可以应用。

而且,由于“空白”可能不仅仅是一个简单的空格,"\s" 也应该可以正常工作。

关于ruby - 用正则表达式数猫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com