import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "((?s)(\\[)(\\d)(\\])([ ])(?=.*:LOOKUP\\3=(\\w+))|(\\[(\\d+)\\])[ ])((?<artist1>Frank Sinatra)?(\\s-\\s)(?<title1>.*)(?<ext1>\\..*)|(?<title2>.*)(\\s-\\s)(?<artist2>Frank Sinatra)(?<ext2>\\..*)|(?<title3>.*)(?<ext3>\\..*))|(?<dict>RegExDictionary:.*)$";
final String string = "[8] Frank Sinatra - One For My Friend.flac\n"
+ "[51] Come Fly With Me - Frank Sinatra.dsf\n"
+ "[2] Frank Sinatra - Love Me Tender.flac\n"
+ "[17] New York, New York.mp3\n"
+ "[45] Singing In The Rain - Frank Sinatra.flac\n"
+ "RegExDictionary:LOOKUP0=00:LOOKUP1=01:LOOKUP2=02:LOOKUP3=03:LOOKUP4=04:LOOKUP5=05:LOOKUP6=06:LOOKUP7=07:LOOKUP8=08:LOOKUP9=09";
final String subst = "$6$8${title1}${title2}${title3}${ext1}${ext2}${ext3}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + 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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html