RegEx для сопоставления строки после строки до запятой - PullRequest
2 голосов
/ 18 апреля 2019

Вот пример строки.

"BLAH, blah, going to the store &^5, light Version 12.7(2)L6, anyway plus other stuff Version 3.3.4.6. Then goes on an on for several lines..."

Я хочу записать только первый номер версии, не включая слово version, если это возможно, но не включая точки и скобки. Результат остановится, когда он встретит запятую. Результат будет: "1272L6"

Я не хочу, чтобы он включал другие экземпляры версии в текст. Можно ли это сделать?

Я пытался (?<=version)[^,]* Я знаю, что это не относится к удалению точек и скобок и не относится к последующим версиям.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Предполагая, что номер версии зафиксирован в формате, но не на конкретных цифрах или буквах, вы можете сделать это.

  String s = "this is a test 12.7(2)L6, 13.7(2)L6, 14.7(2)L6";
  String reg = "(\\d\\d\\.\\d\\(\\d\\)[A-Z]\\d),";
  Matcher m = Pattern.compile(reg).matcher(s);
  if (m.find()) { // should only find first one
     System.out.println(m.group(1).replaceAll("[.()]", ""));
  }
0 голосов
/ 18 апреля 2019

Это точное RegEx , возможно, не лучшее решение, но оно может помочь вам получить 1272L6:

([0-9]{2})\.([0-9]{1})\(([0-9]{1})\)([A-Z]{1}[0-9]{1})

. Это создает четыре группы (где $1$2$3$4 - это вашаtarget 1272L6) и передает . , ) и (.

. Вы можете изменить {1} на другое количество повторений, напримеркак {1,2}.

enter image description here

...