re = /([\s\S]+)\s*primary\s+key\s*\(\s*`([a-z]\w*)`\s*\)\s*(,\s*unique\s+key\s+uniq_\w+\s*\(`([a-z]\w*)`\))?(,\s*key\s+idx_\w+\s*\((\s*,?\s*`([a-z]\w*)`\s*)+\)\s*)+/i
str = '`id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT \'primary\',
`stu_name` VARCHAR (10) NOT NULL DEFAULT \'\' COMMENT \'username\',
`stu_class` VARCHAR (10) NOT NULL DEFAULT \'\' COMMENT \'class\',
`stu_num` INT (11) NOT NULL DEFAULT \'0\' COMMENT \'study number\',
`stu_score` SMALLINT UNSIGNED NOT NULL DEFAULT \'0\' COMMENT \'total\',
`tuition` DECIMAL (5, 2) NOT NULL DEFAULT \'0\' COMMENT \'fee\',
`phone_number` VARCHAR (20) NOT NULL DEFAULT \'0\' COMMENT \'mobile\',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'record created time\',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'record updated time\',
`status` TINYINT NOT NULL DEFAULT \'1\' COMMENT \'some comment\',
PRIMARY KEY (`id`),
UNIQUE KEY uniq_stu_num (`stu_num`),
KEY idx_stu_score (`stu_score`),
KEY idx_update_time_tuition (`update_time`, `tuition`)'
subst = '\\2'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html