정규표현식 - 그룹

Created:

그룹이란 텍스트를 괄호로 묶은것이다. 두가지 이상의 패턴중 하나를 선택하거나 서브패턴을 만들때, 역참조하기 위해 사용한다

그룹 참조와 역참조

  • 찾고자 하는 패턴의 전체 또는 일부분을 괄호를 사용해서 그룹으로 묶어 놓으면 임시로 메모리에 저장된다. 그리고 역참조를 사용하여 저장한 내용을 다시 불러 올 수 있다.
  • \1, \2 …으로 그룹순서 별로 불러 올 수 있다.

    /(hello)\1/.exec("hellohello world");
    // "hellohello"
    // \1은 첫번째괄호안에 있는 hello를 뜻한다 따라서 표현식은 hellohello가 된다.
    
  • 그룹 이름을 지정해 놓으면 나중에 숫자가 아니라 지정한 이름으로 불러 올 수 있다.
  • (?<x>…) 형식으로 이름을 정한뒤에 \k<x> 으로 불러 올 수 있다..

    /(?<x>hello)\k<x>/.exec("hellohello world");
    // "hellohello"
    // \k<x>는 첫번째괄호안에 있는 hello를 뜻한다 따라서 표현식은 hellohello가 된다.
    

비참조 그룹

  • 그룹 내용을 메모리에 저장 하지 않으므로 역참조 할 수 없다. 때에 따라 성능 향상에 도움이 될 수 있다.
  • 그룹안에 ?:를 붙이면 된다. (?:…)

    /(?:hello)\1/.exec("hellohello world");
    // null
    // \1로 괄호안에있는것을 가져오려고 했지만 비참조 그룹이므로 때문에 가져올수 없다.
    

Comments