我正在设置一个简单的检查程序现在,它非常简单,是jsut检查整数。我不认为正则表达式是错误的,但我对ruby还不熟悉。
测试自动正则表达式
def createRegexClosure(re)
reg = Regexp.new(re)
return lambda { |t|
return reg.match(t)
}
end
predefinedRegex = {
'+int' => '/[1-9][0-9]*/',
'int' => '/-?[0-9]+/',
'-int' => '/-[0-9]+/'
}
positiveInt = createRegexClosure(predefinedRegex['+int'])
normalInt = createRegexClosure(predefinedRegex['int'])
negativeInt = createRegexClosure(predefinedRegex['-int'])
puts positiveInt.call('5932423') ? 'good' : 'bad'
puts normalInt.call('0') ? 'good' : 'bad'
puts normalInt.call('-2121') ? 'good' : 'bad'
puts negativeInt.call('-32332') ? 'good' : 'bad'
它连续四次打印出坏的这是不可能的。
最佳答案
我认为您需要删除/
中的predefinedRegex
字符Regexp.new的参数应该是创建正则表达式的模式。
predefinedRegex = {
'+int' => '[1-9][0-9]*',
'int' => '-?[0-9]+',
'-int' => '-[0-9]+'
}
此外,根据您的目标,您可能需要表达式中的锚定字符(
^
和$
)。