import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Ideone {
  public static void main(String[] args) {
    final Pattern pattern = Pattern.compile(
        "\\b(?<!\\.)(?<number>\\d{1,4})(?:(\\.\\d{1,2})?)(?<unit> ml)\\b",
        Pattern.CASE_INSENSITIVE);

    final Matcher matcher = pattern.matcher("5432 ml");
    final Matcher matcher2 = pattern.matcher("54321 ml");
    final Matcher matcher3 = pattern.matcher("1234.0 ml");
    final Matcher matcher4 = pattern.matcher("Start 12345.0 ml end");

    final String result = matcher.find()
        ? matcher.group("number") + matcher.group("unit")
        : "";
    final String result2 = matcher2.find()
        ? matcher2.group("number") + matcher2.group("unit")
        : "";
    final String result3 = matcher3.find()
        ? matcher3.group("number") + matcher3.group("unit")
        : "";
    final String result4 = matcher4.find()
        ? matcher4.group("number") + matcher4.group("unit")
        : "";

    System.out.println(Objects.equals(result, "5432 ml"));
    System.out.println(Objects.equals(result2, ""));
    System.out.println(Objects.equals(result3, "1234 ml"));
    System.out.println(Objects.equals(result4, ""));
  }
}