import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\b(\\d{1,3}(?: \\d{3})+)(,\\d{2})? \\{,2\\}[а-яА-Я,. ()]+\\b(без|\\d{2} копеек\\)?, без)";
final String string = "3 322 559,32 руб. без НДС.\n"
+ " 598 060,67 руб. НДС \n"
+ "3 920 619,99руб. с НДС.\n\n"
+ "5 026 813,65 руб. без НДС;\n"
+ " 904 826,46 руб. НДС (18%);\n"
+ "5 931 640,11 руб. с НДС\n\n"
+ "Лот 1.\n"
+ "4 837 251,02 руб. без НДС;\n"
+ "870 050,18 руб. НДС (18%);\n"
+ "5 707 956,20 руб. с НДС\n\n"
+ "Лот 2.\n"
+ "75 290,87 руб. без НДС;\n"
+ "13 552,36 руб. НДС (18%);\n"
+ "88 843,23 руб. с НДС\n\n"
+ "ИТОГО:\n"
+ "4 912 541,89 руб. без НДС\n"
+ "884 257,54 руб. НДС (18%);\n"
+ "5 796 799,43 руб. с НДС\n\n"
+ "1 307 856 (Один миллион триста семь тысяч восемьсот пятьдесят шесть) рублей 67 копеек, в т.ч. НДС.\n"
+ "1 214 490 (Один миллион двести четырнадцать тысяч четыреста девяносто) рублей 67 копеек, без учета НДС.\n\n"
+ "307 272,00 рублей (Триста семь тысяч двести семьдесят два рубля 00 копеек), включая НДС. \n"
+ "260 400,00 рублей (Двести шестьдесят тысяч четыреста рублей 00 копеек), без учета НДС.\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
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