Нет способа объединить строки, как в , регулярное выражение , но легко создать группу для первого совпадения, группу для второго совпадения, а затем использовать m.group(1) + m.group(2)
для объединениядве группы вместе и создайте желаемую комбинированную строку.
Также обратите внимание, что [0-9]
упрощается до \d
, набор символов с одним токеном упрощается только до этого токена, [a-z0-9_]
с i
флаг упрощается до \w
, и нет необходимости экранировать .
внутри набора символов:
String input = "142d 000781fe0000326f BPD false 65535 FSK_75 FSK_75 -51.984 -48";
String ref="(\\d{5,7}(?:[a-z]\\w*)).*?((?:-?\\d*\\.\\d+)(?![-+\\d.]))";
Pattern p = Pattern.compile(ref,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(input);
while (m.find())
{
String all = m.group(1) + m.group(2);
System.out.println(all);
}