use strict;
my $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`)';
my $regex = qr/([\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*)+/ip;
my $subst = '\\2';
my $result = $str =~ s/$regex/$subst/rg;
print "The result of the substitution is' $result\n";
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 Perl, please visit: http://perldoc.perl.org/perlre.html