import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\$(?P<type>(?:v|a|s))?(?P<prop>(?:lang|lang2|lang3|language|codec|format|ch|channels|res|resolution))(?:(?:_(?P<num>\\d+))|(?:_(?P<lang>[^_0-9\\$\\n]+)(?:_(?P<num2>\\d+))?))?\\$";
final String string = "$alang$\n"
+ "$alang_0$\n\n"
+ "$acodec$\n"
+ "$acodec_0$\n"
+ "$acodec_jp$\n"
+ "$acodec_jp_0$\n\n"
+ "$aformat$\n"
+ "$aformat_0$\n"
+ "$aformat_jp$\n"
+ "$aformat_jp_0$\n\n"
+ "$ach$\n"
+ "$ach_0$\n"
+ "$ach_jp$\n"
+ "$ach_jp_0$\n\n"
+ "$achannels$\n"
+ "$achannels_0$\n"
+ "$achannels_jp$\n"
+ "$achannels_jp_0$\n\n"
+ "$codec$\n\n"
+ "$res$ $vformat$ $aformat_jp$ $ach_0$";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);
while (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