업데이트가 있는지 온라인으로 확인하는 프로그램을 작성 중입니다. 내가 업데이트 확인을 위해 사용하는 사이트는 나에게 다음과 같습니다 일반 텍스트 응답을 제공합니다Regex 캡처 그룹 부정하기
filename:foobar0.2.3-dev.zip
무엇을 달성하려고하는 것은 내가없이 받도록 문자열 중 버전 번호 (0.2.3-dev
)를 얻을 수 있습니다 파일 이름은 매번이 형식이어야하므로 baz0.2.3-dev.jar
등에서도 작동해야합니다.
나는 어떻게이 일을 할 수 있었는지 전혀 알지 못해 어떤 도움을 주시면 감사하겠습니다.
친절하게 제공합니다.
벤의 도움으로
@EDIT
(아래 그의 대답을 참조) 나는 방법을 생각이 완료하세요.String input = "filename:foobar0.2.3-dev.zip";
Pattern p = Pattern.compile(".*?((\\d+(?:\\.\\d+)*).+)\\..*");
Matcher m = p.matcher(input);
if(m.matches()) {
System.out.println(m.group(1)); // This should output 0.2.3-dev
}
는 어떻게 확인합니까'0.2.3-dev'는 갱신 실제로? 그것의 old_string! = capture_group_1, 당신은 정말 정규식이 필요하지 않습니다. – sln
이'. *? ((\ d + (? : \. \ d +) *). +) \ .. *'는 문제를 일으킬 것입니다. 자체적으로 남겨두면 버전의 일부일 수있는 마지막 기간을 정렬/소비합니다. – sln
방탄 버전은''. * ((? sln