假设我有以下字符串:
str1 = "[1] : blah blah blah"
str2 = "[2] : Something"
str3 = "Nothing"
我编写了一个方法foo(str)
,它接受一个字符串作为参数,如果字符串以" [DIGIT]"开头,则返回true。数字可以是任何自然数(1,2,3,4 ......)。因此str1
和str2
应该返回true。 str3
应该返回false。
我无法找出匹配"[DIGIT]"
的正则表达式。 /[[\d]]/
是我能想到的最好的,它不起作用,只匹配"N]"
,错过了起始括号。试一试here。
目前该方法如下所示:
def foo(str)
str =~ /[[\d]]/
end
答案 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