import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "desc\\s*\"(((?!\").)*)((?!\\n).)*\\n{1}task\\s*:(((?!\\n).)*)do(((?!\\nend).)*)\\nend";
final String string = "import 'cloud2/cloud2.rb'\n"
+ "desc \"transfer db from current location to local and new dev\"\n"
+ "task :fulldbtransfer => [ \n"
+ " :dbdown, :dbup, \n"
+ " :dbup_live,]\n"
+ "$comps_db = ['prube_yalecomps']\n"
+ "$tnew_dbs = [ 'prube_yaletnew_drama_prod',\n"
+ " 'prube_yaletnew_summer_cabaret_prod',\n"
+ " 'prube_yaletnew_cabaret_prod',\n"
+ " 'prube_yaletnew_music_prod',\n"
+ " 'prube_yaletnew_rep_prod']\n"
+ "$new_tnew_dbs = [ 'prube_yaletnew_drama',\n"
+ " 'prube_yaletnew_summer_cabaret',\n"
+ " 'prube_yaletnew_cabaret',\n"
+ " 'prube_yaletnew_music',\n"
+ " 'prube_yaletnew_rep']\n"
+ "all_erube_dbs = $comps_db + $tnew_dbs\n"
+ "desc \"Transfer Database, complete with tunnel setup and teardown\"\n"
+ "task :dbdown do\n"
+ " all_erube_dbs.each do |database_name|\n"
+ " cloud2_mysqldump do tunnel_host 'cumulus-www-master-pub.rs.lynch2.com'\n"
+ " tunnel_user 'www' db_host 'cumulus-db-master.rs.lynch2.com' skip_secure_auth true \n"
+ " db_user 'mysql'\n"
+ " db_pass 'mysql'\n"
+ " db_name \" file_prefix 'SOURCE_'\n"
+ " ignored_tables ['cache','hits','debug','sessionvars','sessions']\n"
+ " end \n"
+ " end\n"
+ "end\n\n"
+ "task :dbsandr do\n"
+ " dbname = \"prube_yalecomps\"\n"
+ " bucket_prefix = \"comps\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [ ]\n\n"
+ " replace_str [ ] end\n\n"
+ " dbname = \"prube_yaletnew_drama_prod\"\n"
+ " bucket_prefix = \"drame\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [\n"
+ " 'prube_yaletnew_drama_prod', ]\n\n"
+ " replace_str [\n"
+ " \"prube_yaletnew_drama\", ] end\n\n"
+ " dbname = \"prube_yaletnew_summer_cabaret_prod\"\n"
+ " bucket_prefix = \"summer-cabaret\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [\n"
+ " 'prube_yaletnew_summer_cabaret_prod', ]\n\n"
+ " replace_str [\n"
+ " 'prube_yaletnew_summer_cabaret', ] end\n\n\n"
+ " dbname = \"prube_yaletnew_cabaret_prod\"\n"
+ " bucket_prefix = \"cabaret\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [\n"
+ " 'prube_yaletnew_cabaret_prod', ]\n\n"
+ " replace_str [\n"
+ " 'prube_yaletnew_cabaret', ] end\n\n"
+ " dbname = \"prube_yaletnew_music_prod\"\n"
+ " bucket_prefix = \"music\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [\n"
+ " 'prube_yaletnew_music_prod', ]\n\n"
+ " replace_str [\n"
+ " 'prube_yaletnew_music', ] end\n\n"
+ " dbname = \"prube_yaletnew_rep_prod\"\n"
+ " bucket_prefix = \"rep\"\n"
+ " cloud2_sed do\n"
+ " source_file \"db-tools/SOURCE_mysqldump_ dest_file \"db-tools/CLOUD2_ \n"
+ " find_str [\n"
+ " 'prube_yaletnew_rep_prod', ]\n\n"
+ " replace_str [\n"
+ " 'prube_yaletnew_rep', ] end\n\n"
+ "end\n\n\n\n"
+ "desc \"Send Database to tigard-dev-rds\"\n"
+ "task :dbup do\n"
+ " upload_dbs \"reston-dev-rds.aws.lynch2.com\"\n"
+ "end\n\n"
+ "desc \"Send Database to tigard-mail2-rds\"\n"
+ "task :dbup_live do\n"
+ " upload_dbs \"reston-live-rds.aws.lynch2.com\"\n"
+ "end\n\n"
+ "def upload_dbs (dbhost)\n"
+ " $comps_db.each do |database_name| \n"
+ " cloud2_mysql do db_host dbhost\n"
+ " db_user 'mysql'\n"
+ " db_pass 'mysql'\n"
+ " db_name \"mysql\" sql_files [\"CLOUD2_ end \n"
+ " cloud2_mysql do db_host dbhost\n"
+ " db_user 'mysql'\n"
+ " db_pass 'mysql'\n"
+ " db_name \" sql_files [\"erube_upgrade.sql\"]\n"
+ " end \n"
+ " end\n"
+ " $new_tnew_dbs.each do |database_name| \n"
+ " cloud2_mysql do db_host dbhost\n"
+ " db_user 'mysql'\n"
+ " db_pass 'mysql'\n"
+ " db_name \"mysql\" sql_files [\"CLOUD2_ end \n"
+ " cloud2_mysql do db_host dbhost\n"
+ " db_user 'mysql'\n"
+ " db_pass 'mysql'\n"
+ " db_name \" sql_files [\"tnew_erube_upgrade.sql\"]\n"
+ " end \n"
+ " end\n"
+ "end\n";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(string);
if (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html