자주 쓰이는 플래그
정규표현식에는 플래그(flag)라는 것이 있습니다. 플래그는 검색 대상 문자열을 검색할 때 어떤 방식으로 매칭할지를 지정해 주는 역할을 합니다.
다음은 자주 사용되는 세 가지 플래그와 그 사용 방법입니다.
i | 대소문자를 구분하지 않고 검색을 수행합니다. 예시) /hello/i는 "Hello", "HELLO", "heLLo" 등의 문자열과 매칭됩니다. |
g | 검색 대상 문자열에서 전역(global) 매칭을 수행합니다. 예시) /hello/g는 검색 대상 문자열 내에서 "hello"라는 문자열이 모두 매칭됩니다. 더 자세한 예를 들어보면, "hello"라는 문자열만 포함한 문자열 뿐만 아니라, "helloworld"와 같이 "hello" 문자열을 포함한 다른 문자열도 매칭됩니다. |
m | 검색 대상 문자열이 여러 줄일 경우(multiline), 각 줄의 시작과 끝을 매칭합니다. 예시) /^hello/m는 검색 대상 문자열의 각 줄(각 행)의 시작 부분에 "hello" 문자열이 매칭됩니다. |
만일 i 플래그가 생략되어 있다면 즉, ' /패턴/ ' 과 같다면 대소문자를 구분하여 검색을 수행합니다.
예를 들어 /hello/라는 정규표현식은 검색 대상 문자열에서 "hello"라는 문자열과 완전히 일치하는 부분만 매칭시키며, 대소문자를 구분합니다. 이 때, "Hello"나 "hEllo" 등과 같이 대소문자가 다른 문자열은 매칭되지 않습니다.
이외에도 s 플래그(닷 옵션, dot all)는 줄바꿈 문자를 제외한 모든 문자와 매칭할 수 있도록 해줍니다.
플래그는 서로 혼합해서 사용할 수 있습니다.
예를 들어, /hello/gi와 같이 g 플래그와 i 플래그를 함께 사용할 수 있습니다. 이 경우, g 플래그는 검색 대상 문자열 내에서 전역 매칭을 수행하고, i 플래그는 대소문자를 구분하지 않습니다.
따라서, "hello", "HELLO", "heLLo" 등 대소문자와 상관없이 "hello"라는 문자열이 포함된 모든 문자열을 매칭시킵니다.
또 다른 예로, /hello/mgi와 같이 g, i, m 플래그를 함께 사용할 수 있습니다. 이 경우, g 플래그는 전역 매칭을 수행하고, i 플래그는 대소문자를 구분하지 않습니다.
m 플래그는 다중행 매칭을 수행하는데, 이는 ^와 $ 메타문자가 문자열 전체에서 매칭되는 것이 아닌 각 행에서 매칭되도록 해줍니다.
따라서, 여러 줄로 이루어진 문자열에서 "hello"라는 문자열이 포함된 모든 행을 매칭시킵니다.
'정규표현식' 카테고리의 다른 글
[정규표현식] 대표적인 기호와 예시 (0) | 2023.03.09 |
---|