在正则表达式中缓存N个第一个字符

时间:2017-09-07 10:22:02

标签: ruby regex

我想检查前N个字符是否与正则表达式匹配。在这种情况下3个字符。为什么两种情况都为零?

irb(main):004:0> "abc" =~ /abcde{3}/
=> nil


irb(main):008:0> /abcde{3}/ =~ "abc"
=> nil

4 个答案:

答案 0 :(得分:0)

一种说法是因为字符串"abc"短于七个字符。

答案 1 :(得分:0)

搞砸了正则表达式和字符串。 /abcde{3}/表示/abcdeee/。你需要的是:

"abcde"[0...3] =~ /\Aabc\z/

或只是:

"abcde" =~ /\Aabc/

答案 2 :(得分:0)

你的正则表达式试图在两个语句中出现三次char e ,但你没有。所以,你的正则表达式可能是这样的,

"abcdeee" =~ /abcde{3}/
# => 0
/abcde{3}/ =~ 'abcdeee'
# => 0

所以,我认为你需要使用下面的正则表达式来匹配N个字符,

'abcdee' =~ /[a-e]{3}/
# => 0
$&
# => "abc"

如果您需要更多信息,请与我们联系。

答案 3 :(得分:0)

您可以尝试使用以下exp

/[abcde]{3}/