import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<=;)\"([^\"]*)\"(?=;)|([^;]+);?|;";
final String string = "11221;\"9 Test with ; semicolon\";TST03;6011\n"
+ "48350;;;1919\n"
+ "48350;10 Test Reference *;;\n"
+ "23001;\"Hello \" Hello\";\"1234\";4506\n"
+ "23001;Hello; \" Hello\";\"1234\";4506\n"
+ "BCNR_HEADQUARTERS_BANK;MERCHANT_NAME;MERCHANT_ID;MCC\n"
+ "80000;1 Fix Merchant Name;;\n"
+ "80000;2 *GUIMY0801C;300293199;\n"
+ "23000;3 * Merchant Name;;6011\n"
+ "23000;4Fix Merchant*;;6010\n"
+ "80000;5 MY1901000C\\**;45;6011\n"
+ "80000;6 Test Reference DY0800011C;300293199;\n"
+ "77800;7 Multiple \"quotation\" \"marks;TST01;\n"
+ "78700;8 Special chars /*-+`?=)(/&%ç*\"+;TST02;6010\n\n"
+ "BCNR_HEADQUARTERS_BANK;MERCHANT_NAME;MERCHANT_ID;MCC\n"
+ "80000;1 Fix Merchant Name;;\n"
+ "80000;2 *GUIMY0801C;300293199;\n"
+ "23000;3 * Merchant Name;;6011\n"
+ "23000;4 Fix Merchant*;;6010\n"
+ "80000;5 MY1901000C\\**;45;6011\n"
+ "80000;6 Test Reference DY0800011C;300293199;\n"
+ "77800;7 Multiple \"quotation\" \"marks;6543;\n"
+ "78700;8 Special chars /*-+`?=)(/&%ç*\"+;9999;6010\n"
+ "11221;\"9 Test with ; semicolon\";9999;6011\n"
+ "48350;10 Test Reference *;;\n"
+ "23001;\"11 Escape char \" which must not be interpreted\";\"MERID\";4506\n\n"
+ "-- https://regex101.com/r/5b2Lsx/1\n"
+ "-- https://regex101.com/r/MnZLSH/1";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
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