Это два типа строк, которые я могу получить на входе:
String mex1 = "/ABCD/YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI";
String mex2 = "/ABCD/YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI/ORDERS/9865432342990160";
Которые попадают в двух возможных случаях, с * / some_word / some_number * и без него
Я написал это регулярное выражение, которое дает результат, которого я не понимаю:
String mex=//<one of two input cases as already explained>
Pattern p = Pattern.compile("(/ABCD/)(.+ )(/\\w+/\\d+)?");
Matcher m = p.matcher(mex);
if(m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2)); // this the group I would like to retrieve...
}
И результат:
mex2
/ABCD/
YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD LEGALI
mex1
/ABCD/
YY YYYYY SPA QWE XXXXX XXXXX SPA - 02342990153*XXXXX XXXX SPA ABCD
Это не то, что я ожидал, в частности, с mex2, где строка, которую я хочу получить, усекается.
Кроме того, почему после включения границ приводит к совпадению find = false?
Pattern p = Pattern.compile("^(/ABCD/)(.+ )(/\\w+/\\d+)?$");
спасибо