💡 정규 표현식이란 ?
특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다.
💡 여러가지 표현 방법 (메타 문자)
^
문자열 또는 줄의 시작을 지정합니다. 예를 들어 ^0은 0으로 시작하는 문자열과 일치합니다. [^0]처럼 ^ 문자가 대괄호 안에 들어 있다면, ^는 시작하지 않는다는 뜻입니다.
?
물음표 (?)는 앞에 있는 문자 또는 그룹 0 또는 1개와 일치합니다. For example, 12?3은 123 또는 13과 일치합니다.
(…)
괄호는 문자 그룹을 정의하여, 괄호 내 쌍이 그룹을 형성합니다. 이는 이미지 파일 이름에서 정보를 추출할 때 매우 유용합니다. 예를 들어, 이미지들이 Good_0001.png처럼 특정한 이름 지정 규칙을 따랐는데, 이 이미지들만을 반환하고 싶으면, ^(Good.+).png$와 같이 쓸 수 있습니다.
+
앞의 표현식이 1회 이상 연속으로 반복되는 부분과 대응됩니다.
.
. 기호는 아무거나 다 매칭됩니다. 띄어쓰기 또한 매치됩니다.
[ ]
[ ]사이에 들어간 문자 중 하나를 매치합니다. ex> [abc]는 ab, ac, bc를 모두 포함
?=
Lookahead입니다. 정규식에서 ?= 메타문자로 input 문자를 필터링 할 수 있는데, 이 것은 그룹의 패턴을 차례대로 일치하는지 살펴보겠다는 말입니다.
💡 실습
위 링크를 통해 정규표현식을 사용한 결과를 바로바로 확인할 수 있습니다.
1
www.facebook.com:2021/?key=1&key=2
정규표현식을 사용하여 [“www.facebook.com”, “2021”, “key=1&key2”] 으로 나눠보겠습니다.
”:” 를 기준으로 나눕니다.
- ()는 그룹을 의미합니다.
- [] 안에 ^는 그 뒤에 내용이 아니라는 뜻입니다.
- ”+” 앞에 “[^:]”가 1번 이상 반복되는 부분과 대응되므로, “:”를 기준으로 그룹이 나뉘어 집니다.
”/?”앞 까지 나눕니다.
- ?는 있어도 되고 없어도 된다는 뜻입니다. 따라서 :와 2021은 있어도 되고, 없어도 됩니다.
- [0-9]는 숫자라는 뜻입니다.
- {4}는 4번 반복된다는 뜻입니다.
”/?” 뒤를 묶습니다.
실제로 사용해보기
그룹을 나눴으니, 실제로 어떻게 사용하는지 알아보겠습니다.
위 코드를 실행하면 다음과 같습니다.
Array 형태로 나오는데(실제로는 object), 첫 번째 인덱스는 전체 문자열이고, 두 번째 인덱스 부터는 정규 표현식으로 나눈 문자열들이 나오게 됩니다.
그룹 이름 지정하기
- 위에서 나눈 그룹들에 이름을 지정할 수 있습니다. regex101 에서 그룹을 지정하면, 그룹 이름도 확인할 수 있습니다.
실제로 사용해보기
- 그룹 이름을 지정하기 전과 다르게, 이번에는 groups가 undefined가 아닙니다.
- 그룹 이름이 “facebook”인 것에 접근을 하면, facebook에 해당하는 값이 나오게 됩니다.
참고 자료
https://www.regular-expressions.info/refext.html
https://ko.wikipedia.org/wiki/정규_표현식
https://zzossig.io/posts/regexp/grouping_in_regular_expressions/