检查字符串是否以ruby中的正则表达式开头以匹配" [NATURAL NUMBER]"

时间:2016-08-26 17:25:32

标签: ruby regex

假设我有以下字符串:

str1 = "[1] : blah blah blah"
str2 = "[2] : Something"
str3 = "Nothing"

我编写了一个方法foo(str),它接受​​一个字符串作为参数,如果字符串以" [DIGIT]"开头,则返回true。数字可以是任何自然数(1,2,3,4 ......)。因此str1str2应该返回true。 str3应该返回false。

我无法找出匹配"[DIGIT]"的正则表达式。 /[[\d]]/是我能想到的最好的,它不起作用,只匹配"N]",错过了起始括号。试一试here

目前该方法如下所示:

def foo(str)
  str =~ /[[\d]]/
end

2 个答案:

答案 0 :(得分:3)

使用斜杠尝试this

$> irb
>> str1 = "[1] : blah blah blah"
>> str1[/\[\d\]/]
=> "[1]"

使用\字符转义正则表达式中具有特殊含义的字符。

答案 1 :(得分:1)

您不必使用正则表达式。

def starts_with_you_know_what(str)
  str[0] == '[' && '0123456789'.include?(str[1]) && str[2] == ']'
end

starts_with_you_know_what "[1] : blah blah blah" #=> true
starts_with_you_know_what "[2] : Something"      #=> true
starts_with_you_know_what "Nothing"              #=> false