JavaRush /Java Blog /Random-KO /Java 정규식의 백링크
eGarmin
레벨 41

Java 정규식의 백링크

Random-KO 그룹에 게시되었습니다
Java 정규식의 역참조는 Java 엔진에서 지원하는 매우 유용한 기능입니다 . 백링크가 무엇인지 이해하려면 먼저 그룹이 무엇 인지 이해하는 방법을 배워야 합니다 . 정규식의 그룹은 여러 문자를 단일 단위로 처리합니다. 그룹은 괄호 "()" 안에 문자를 넣어 생성됩니다. 한 쌍의 괄호는 하나의 그룹입니다. 백링크는 검색 패턴을 직접 복사하지 않고도 반복할 수 있기 때문에 편리합니다. \N 과 같은 구성을 사용하여 이전에 정의된 그룹을 참조하기만 하면 됩니다 . 여기서 N 은 그룹 번호입니다. 다음 2가지 예는 백링크의 편리함을 보여줍니다.
예 1: 반복 패턴 찾기
(\d\d\d)\1 형식의 구성은 123123행과 일치하지만 123456행은 일치하지 않습니다. String str = "ля123123ля"; Pattern p = Pattern.compile("(\\d\\d\\d)\\1"); Matcher m = p.matcher(str); System.out.println(m.groupCount()); while (m.find()) { String word = m.group(); System.out.println(word + " " + m.start() + " " + m.end()); } 출력: 1 123123 2 8 번역가의 메모! 여기서는 번역자로서 약간의 자유를 갖고 나 자신의 의견을 삽입하고 싶습니다. 저는 정규식에 대해 배우고 있는데 욕설로 고쳐주셨으면 좋겠습니다 :) 아래에 쓴 내용이 오류인 경우: 1) groupCount() 메서드 는 패턴에 지정된 그룹 수를 반환하므로 입력 문자열이 템플릿에 맞지 않는 "la123" 456 la"인 경우 숫자 1이 화면에 계속 표시됩니다. 2) find() 메소드 다음 그룹을 검색하지만 부울 값만 반환합니다. : true – 발견됨, false – 발견되지 않음 3) group() 메소드 패턴에서 발견된 마지막 하위 문자열 하나를 반환합니다. 이 경우 123123 4) start() 메소드 는 소스 문자열에서 찾은 하위 문자열의 위치를 ​​반환합니다(번호 매기기, 0부터 시작) 5) end () 메소드는 소스 문자열에서 찾은 하위 문자열 바로 다음 위치를 반환합니다. 하위 문자열. 따라서 이 값은 소스 문자열에서 발견된 하위 문자열의 마지막 문자를 가리키는 것이 아니라 그 다음 문자를 가리킵니다.
예시 2: 중복 단어 찾기
String pattern = "\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b"; Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); String phrase = "unique is not duplicate but unique, Duplicate is duplicate."; Matcher m = p.matcher(phrase); while (m.find()) { String val = m.group(); System.out.println("Найденная последовательность символов: \"" + val + "\""); System.out.println("Слово-дубликат: " + m.group(1) + "\n"); } 결론: Найденная последовательность символов: "unique is not duplicate but unique" Слово-дубликат: unique Найденная последовательность символов: "Duplicate is duplicate" Слово-дубликат: Duplicate 정규 표현식을 사용하여 중복 단어를 찾는 이 방법은 최적이 아닙니다. 예를 들어, 위의 예에서는 첫 번째 단어 "duplicate"를 건너뜁니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION