본문 바로가기
프로그래밍 언어 & 데이터베이스/정규 표현식

정규 표현식 - 집합 표현 방법, 하이픈, 캐럿

by ♥︎해이나♥︎ 2023. 7. 3.
반응형

정규 표현식은 문자열을 일정한 패턴으로 표현하는 방식으로, 프론트엔드, 백엔드, 데이터 분석 등 여러 분야에서 활용할 수 있다. 이번 포스팅에서는 정규 표현식의 기초인 집합에 대해서 정리해 보려고 한다. 

 

정규 표현식은 아래 사이트에서 실습하였는데, 무료로 사용할 수 있으니 참고하면 좋을 것 같다. 

https://regex101.com/

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.

regex101.com

 

 

집합 표현방법

집합은 표현하고 싶은 문자를 대괄호[]에 넣어서 사용한다. 대괄호 안에 들어간 문자들은 or 연산이 적용된다.

참고로 or 연산은 '또는'의 의미를 가지며, 괄호 안의 문자 중 하나라도 매칭되면 선택된다.

 

ex) bar, car, far 세 단어를 동시에 찾고 싶다면 [bcf]ar

정규표현식 예제

 

ex) 문장에 있는 모든 숫자를 정규 표현식으로 [0123456789]

정규표현식 예제

 

알파벳도 집합을 통해 표현할 수 있는데, 일반적인 정규 표현식에서는 대소문자를 구분한다.

 

ex) 소문자 알파벳 a, b, c, d, e를 찾고 싶다면 [abcde]

정규표현식 예제

 

알파벳의 경우 [ABCDEFGHIJKLMNOPQRSTUVWXYZ][abcdefghijklmnopqrstuvwxyz]와 같이 대문자 집합, 소문자 집합을 연결한 정규 표현식을 사용하면 본문에서 대문자+소문자 붙어있는 부분만 선택된다.

 

정규표현식 예제

 

만약 대소문자 구분없이 찾고 싶다면 플래그 설정을 하면 된다. 아래와 같이 Gegular Expression 창 우측의 gm 이라고 되어 있는 부분을 클릭하여 insensitive를 선택한다.

 

정규표현식 플래그 설정

 

플래그 설정이 gmi로 바뀌면서 대소문자 구분없이 알파벳이 연결된 부분이 모두 선택되었다. 참고로 문장 끝의 소문자 알파벳이 선택이 되지 않은 것은 함께 선택되어야 하는 짝이 없기 때문이다. (둘씩 짝지어 짐)

 

정규표현식 예제


반응형

모든 문자를 매번 하나씩 다 집합에 입력하는 것은 비효율적이기 때문에, 우리는 하이픈과 캐럿을 사용한다.

 

하이픈(-)

문자 사이의 범위를 나타낸다. 

 

  • 숫자는 [0-9]
  • 영어 소문자는 [a-z]
  • 영어 대문자는 [A-Z]
  • 한글 자음모음 조합은 [가-힣]

 

ex) 숫자와 영어대문자 알파벳을 모두 선택하고 싶은 경우 [0-9A-Z]

정규표현식 예제

 

영어 대문자, 소문자를 모두 선택하고 싶을 때에, 하이픈을 사용하여 [a-Z]와 같이 정규 표현식을 작성한다면 원하는 값을 얻을 수 없다. 이유는 정규 표준식이 아스키 코드를 기준으로 범위를 계산하기 때문이다. 

 

  • a의 아스키 코드 : 97
  • Z의 아스키 코드 : 90

 

집합 안에서 하이픈을 사용할 때에는 반드시 아스키 코드가 낮은 게 왼쪽, 높은 게 오른쪽에 와야 하기 때문에 a-Z는 아스키 코드상 97~90으로 잘못된 표현이다. 아스키 코드는 아래 링크를 클릭하면 확인할 수 있다.

 

https://www.ascii-code.com/

 

ASCII table - Table of ASCII codes, characters and symbols

A complete list of all ASCII codes, characters, symbols and signs included in the 7-bit ASCII table and the extended ASCII table according to the Windows-1252 character set, which is a superset of ISO 8859-1 in terms of printable characters.

www.ascii-code.com

 

캐럿(^)

집합 안의 특정 문자들을 제외하여 선택하고 싶을 때 사용한다.

 

ex) 영어 대문자를 모두 제외한 나머지를 선택하고 싶다면 [^A-Z]

정규표현식 예제

 

중요한 것은 제외의 의미로 ^를 사용할 때에 집합 가장 처음에 위치해야 한다. 영어 대문자를 제외하고 싶어서 [0-9^A-Z]와 같이 표현식을 쓴다면, 숫자와 ^라는 문자, 영어 대문자를 모두 선택하라는 의미로 받아들인다. 

 

정규표현식 예제

 

의도대로 선택하기 위해서는 집합을 나누어 [0-9][^A-Z]라고 입력해야 한다.

 

정규표현식 예제

 

반응형

댓글