정규 표현식

성훈·2021년 7월 6일
0

OiMW

목록 보기
4/12
post-thumbnail

정규 표현식 이란,

정규 표현식(이하 정규식)은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다.
즉, 특정 패턴의 문자열을 찾기 위한 표현식이다.

정규식 리터럴은 /(슬래쉬)로 감싸는 식으로 사용되며 단순 패턴을 찾기 위해선 다음과 같이 사용한다.


단순패턴 사용

/abc/ 와 같이 정규식 리터럴 안에 있는 문자열을 찾아낼때 사용한다.
이럴 경우 정확히 abc가 붙어있는 문자열만 찾아내며 abc가 탐색하는 문자열 내 여러개 있을 경우엔 최초 abc를 찾아냈을때 탐색은 중지된다.

전부 찾아내고 싶을 경우 후술할 플래그/abc/g를 이용해 전부 찾아낼 수 있다.


특수문자 사용

검색에서 여러 조건을 설정하고 싶을때 특수문자를 사용하게 된다.
예를 들어/abc/ 정규식 같은 경우에는 'abbbc'라는 문자열에서 아무것도 찾아낼 수 없지만 특수문자 *를 사용해 /ab*c/를 사용할 경우에는 중간에 있는 b가 몇개가 되든 심지어 없더라도 찾아낼 수 있다.

이런 식으로 조건을 설정해 문자열 탐색을 좀 더 용이하게 만들어주는게 특수문자이다.


\

백슬래쉬를 사용하는 경우는 두가지로 나눌 수 있다.
바로 일반문자 앞에서 사용하는 경우특수문자 앞에서 사용하는 경우이다.

  1. 특수문자 앞에 올 경우
    다른 특수문자 앞에 백슬래쉬가 오면 백슬래쉬 뒤에 있는 문자는 특별한 기능이 없는 일반문자 취급을 한다는 뜻이다.
    /ab*c/는 그냥 쓰일땐 'ab*c'와 대응되지 않지만 백슬래쉬를 사용한 /ab\*c/ 이 정규식과는 대응된다.

  2. 일반문자 앞에 올 경우
    일반문자 앞에서 쓰이면 해당 문자는 일반문자가 아닌 특별한 취급을 한다는 뜻이다.
    /a\dc/'a\dc'와 대응하는 표현식이 아니라 'a0c'와 같이 중간에 숫자가 들어가는 문자열과 대응되게 되는데 이는 \d가 숫자0~9에 대응하는 패턴이기 때문이다.


정규표현식 매칭 패턴 (문자, 숫자, 기호 등)


출처: https://curryyou.tistory.com/234 [카레유]


정규표현식 검색 패턴

아래 패턴들을 이용하면 AND, OR, StartWith, EndWith 등의 다양한 조합을 만들 수 있다.

출처: https://curryyou.tistory.com/234 [카레유]


정규표현식 갯수(수량) 패턴

정규식을 이용하면 특정 문자 또는 패턴이 반복된 것도 대응가능하다.

기호내용
*이전에 적힌 문자가 0회 이상 반복되는 부분과 대응되며 {0,}과 같은 뜻이다.
/ab*c/'abc'는 물론 'abbbc''ac'와도 대응된다.
+이전에 적힌 문자가 1회 이상 반복되는 부분과 대응되며 {1,}과 같은 뜻이다.
/ab+c/'abc'는 물론 'abbbc'와도 대응되자만 'ac'와는 대응되지 않는다.
?이전에 적힌 문자가 있거나 없을때도 대응되게 한다.
/a?bc?/'abdef''ab'와도 대응되고 'bcdef''bc'와도 대응되며 'bdefg''b'와도 대응된다.
{n}이전에 적힌 문자가 n번 나타났을때 대응한다.
/abc{3}/의 경우에 'abc'에는 대응되지 않으며 /abcccccc/ 에서는 'abccc'까지만 대응한다.
{n,m}n과 m은 양의 정수이면서 n <= m 을 만족해야한다.
두 조건을 충족하면 앞 문자가 최소 n개, 최대 m개가 나타나는 부분과 대응한다.
m자리를 비울 수 있는데, 비울 경우 m은 무한대로 취급한다.
/abc{1,3}/의 경우 'abc'는 물론 'abccc'와도 대응한다.
'abcccccc'와 같이 c가 더 많아도 대응은 되나 'abccc'까지만 대응한다.

정규표현식 플래그

플래그는 동시에 사용가능하다. ex) gi, gm 등

출처: https://curryyou.tistory.com/234 [카레유]
이외 다른 플래그들도 있지만, 필요할때 MDN을 찾아가자.


정규표현식 주요 메소드


출처: https://curryyou.tistory.com/234 [카레유]


  • 카레유님이 정리를 너무 잘해주셔서 일단 표를 빌려왔지만 차차 카레유님이 정리해주신 표를 없애가며 MDN을 참조해 내 말로 정리 예정

Reference

카레유님 블로그 - 정규표현식(Regular Expression) 기초/기본 쉽고 상세한 사용 방법 정리(샘플 예제 코드) - https://curryyou.tistory.com/234

MDN - https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글