티스토리 뷰

예제 코드는 모두 Java 언어를 사용한다.


전방탐색

전방탐색(lookahead) 패턴은 일치 영역을 발견해도 그 값을 반환하지 않는 패턴을 말한다.

전방탐색은 실제로는 하위 표현식이며, 하위 표현식과 같은 형식으로 작성한다.

전방탐색 패턴의 구문은 ?=로 시작하고 등호(=) 다음에 일치할 텍스트가 오는 하위 표현식이다.

일부 정규 표현식 문서에서는 일치하는 영역을 반환하는 동작을 표현할 때 consume이라는 용어를 쓴다.

이럴 경우 전방탐색은 not consume이라고 말한다.

 

프로토콜은 콜론(:)을 기준으로 호스트 이름과 분리되어 있다.

프로토콜을 찾는 정규표현식을 만들어보자.

public class code {
    public static void main(String[] args) {
        String regex = ".+(?=:)";
        Pattern pattern = Pattern.compile(regex);

        String[] strs = {
                "<https://www.naver.com>",
                "<https://www.github.com/kkoon9>",
                "the end."
        };

        int count = 0;
        for(String str : strs) {
            Matcher matcher = pattern.matcher(str);
            count++;
            while(matcher.find()) {
                System.out.println(count + ". : " + matcher.group());
            }
        }
    }
}
/*
1. : https
2. : https
*/

후방탐색

텍스트를 반환하기 전에 탐색하는 작업은 뒤쪽을 탐색하기도 포함된다.

후방탐색 연산자는 ?<=이다.

 

위 예제를 참고하여 이번엔 호스트 이름을 찾는 정규표현식을 만들어보자.

public class code {
    public static void main(String[] args) {
        String regex = "(?<=://).+";
        Pattern pattern = Pattern.compile(regex);

        String[] strs = {
                "<https://www.naver.com>",
                "<https://www.github.com/kkoon9>",
                "the end."
        };

        int count = 0;
        for(String str : strs) {
            Matcher matcher = pattern.matcher(str);
            count++;
            while(matcher.find()) {
                System.out.println(count + ". : " + matcher.group());
            }

        }
    }
}
/*
1. : www.naver.com
2. : www.github.com/kkoon9
*/

부정형 전후방탐색

위에 설명했던 전후방탐색의 반댓말로 비교적 덜 쓰는 방법이다.

등호(=) 대신 느낌표(!)를 사용한다.

'개발 방식 연구 > 정규표현식' 카테고리의 다른 글

정규표현식 목차  (0) 2022.01.08
정규표현식 [7] 역참조  (0) 2022.01.08
정규표현식 [6] 위치 찾기  (0) 2022.01.08
정규표현식 [5] 반복 찾기  (0) 2022.01.08
정규표현식 [4] 메타 문자  (0) 2022.01.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함