,Java에서 String의 레코드 번호를 가져 오는 정규식?
String extract = "Purchase Order HDL/17-04-2013/PRO_1311 is saved successfully"
출력 :
HDL/17-04-2013/PRO_1311
제가 인터넷 검색을 시도했지만 결과를 얻을 수 없습니다. Pls가 제안합니다. 같은
,Java에서 String의 레코드 번호를 가져 오는 정규식?
String extract = "Purchase Order HDL/17-04-2013/PRO_1311 is saved successfully"
출력 :
HDL/17-04-2013/PRO_1311
제가 인터넷 검색을 시도했지만 결과를 얻을 수 없습니다. Pls가 제안합니다. 같은
는
String recordNumber = str.replaceAll(".*?(\\w+/\\d{2}-\\d{2}-\\d{4}/\\w+).*", "$1");
답장을 보내 주셔서 감사합니다. .. 그 일을 설명해 주시면 ... # – user1787641
$ 1은 (는) 그룹 # 1에 대한 참조이며, 이것은 expr inside()입니다. 즉, 대괄호 안에 expr과 일치하는 부분으로 입력 문자열을 대체합니다. –
뭔가 :
"Purchase Order ([A-Z]+/\d{2}-\d{2}-\d{4}/[A-Z]+_\d+) is saved successfully"
이 방법 당신은 당신이 첫 번째 캡처 그룹에 필요한 것을 얻을 수 있습니다.
물론 이것은 구매 주문의 패턴에 따라 다르며 정규식에 대해 읽어야합니다.
는 정규식을 사용할 필요가 특별한 이유가 시도? 성능 및 가독성을 이유로 더 적합한 대안이 있다면이를 피하는 것이 좋습니다.
이 경우 접두사와 접미사는 항상 같은 길이이므로 String.substring
을 사용하여 간단히 제거 할 수 있습니다. 당신이 약 정말 분명히하려는 경우 (
String extract = "Purchase Order HDL/17-04-2013/PRO_1311 is saved successfully";
String orderId = extract.substring(15, extract.length() - 22);
: 주문 ID는 항상 " is saved successfully"
에 의해 "Purchase Order "
접두어하고, 다음에 경우에, 당신은 뒤에 떨어져 전면 오프 15 자, 22 자자를 수 있습니다 이 매직 넘버가 어디에서 온, 당신은 예를 들어 private static final int PREFIX_LENGTH = "Purchase Order ".length();
)로 정의 할 수
안녕하세요. 답장을 보내 주셔서 감사합니다. 문제는 레코드 번호 위치가 다를 수 있습니다. 때로는 "구매 주문 저장 성공 : HDL/17-04-2013/PRO_1311"로 표시됩니다. – user1787641
:이 MATC 정규 표현식이다
String s = "Purchase Order HDL/17-04-2013/PRO_1311 is saved successfully";
Pattern p = Pattern.compile("(?<=Purchase Order).+?(?= is saved successfully)");
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group());
}
두 문구 중간에 무엇이든 있습니다. 첫 번째 괄호는보기 뒤 문자열이며 두 번째 괄호 앞 문자입니다.
String.substring()? – anstarovoyt
@ user1787641 Google에서 어떤 시도를 했습니까? –
아무 것도 시도하지 않았습니다. – m0skit0