본문 바로가기
Study/용어

정규표현식

by 꼬부기가우는소리 2018. 8. 20.
728x90

관련 출처 :




정규표현식


정규 표현식(正規表現式, Regular Expression) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다. 즉, 주로 패턴(pattern)으로 부르는 정규 표현식은 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.


컴퓨터 과학의 정규 언어로부터 유래하였으나 구현체에 따라서 정규 언어보다 더 넓은 언어를 표현할 수 있는 경우도 있으며, 심지어 정규 표현식 자체의 문법도 여러 가지 존재하고 있다. 현재 많은 프로그래밍 언어, 텍스트 처리 프로그램, 고급 텍스트 편집기 등이 정규 표현식 기능을 제공한다. 일부는 펄, 자바스크립트, 루비, Tcl처럼 문법에 내장되어 있는 반면 닷넷 언어, 자바, 파이썬, POSIX C, C++ (C++11 이후)에서는 표준 라이브러리를 통해 제공한다. 그 밖의 대부분의 언어들은 별도의 라이브러리를 통해 정규 표현식을 제공한다.


정규 표현식은 검색 엔진, 워드 프로세서와 문서 편집기의 찾아 바꾸기 대화상자, 또 sed, AWK와 같은 문자 처리 유틸리티, 어휘 분석에 사용된다.




패턴


정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해 특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다. 정규 표현식의 각 문자(즉, 패턴을 기술하는 문자열 안의 각 문자)는 메타문자(특별한 의미로)로 이해되거나 정규 문자('문자 그대로', 즉 '리터럴'의 의미로)로 이해된다.


패턴 일치는 정확히 동일한 일치에서부터 매우 포괄적인 유사 일치(메타문자에 의해 제어)에 이르기까지 다양하다. 이를테면 .는 매우 포괄적인 패턴이며, [a-z]('a'부터 'z'까지의 모든 문자 일치)는 덜 포괄적이며 a는 정확한 패턴(단지 'a'만 일치)이다. 메타문자 문법은 다양한 입력 데이터의 텍스트 처리의 자동화를 지시하는 정확하고 유연한 방법을 통해 표준 ASCII 자판을 사용하여 입력하기 쉬운 형태로, 미리 기술된 대상을 표현하기 위해 설계되었다.


와일드카드 문자를 사용하는 경우는 파일 목록에서 비슷한 이름을 글로브 처리하는 것인 반면, 정규 표현식은 일반적으로 텍스트 문자열과 패턴 일치가 되는 애플리케이션에 보통 사용된다. 이를테면 ^[ \t]+|[ \t]+$는 줄 끝이나 줄 맨앞에 여분의 공백을 일치시킨다. 어떠한 숫자라도 일치시키기 위해 쓰이는 진보한 정규 표현식은 [+-]?(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?이다.




이용


정규 표현식은 다양한 텍스트 처리 작업, 더 일반적으로 문자열 처리에 유용하며, 여기에서 데이터는 반드시 텍스트일 필요는 없다. 일반적으로 데이터 검증, 데이터 스크래핑(일반적으로 웹 스크래핑), 데이터 랭글링, 단순 파싱, 문법 강조 시스템 개발 등의 작업에 응용된다.


정규 표현식이 인터넷 검색 엔진에 유용할 수 있으나 전체 데이터베이스를 거쳐 이것들을 처리하기에는 정규 표현식의 복잡도와 설계에 따라 컴퓨터 자원을 과도하게 소비할 수 있다. 대개의 경우 시스템 관리자들이 정규 표현식 기반 쿼리를 내부적으로 수행할 수 있지만 대부분의 검색 엔진들은 대중에게 정규 표현식 지원을 제공하지 않는다.




정규 표현식을 위한 도구들


정규 표현식은 그 강력함만큼이나 이해하기 어렵다. 이러한 정규 표현식의 단점을 보안해주는 아래와 같은 다양한 도구들이 존재한다.


(1) RegExr


정규 표현식을 작성하면서 실시간으로 그 결과를 테스트 할 수 있는 도구다. 정규 표현식에 대한 도움말과 각종 사례들을 보여주는 서비스로 정규표현식을 라이브로 만들 수 있는 기능도 제공하고 있다. 패턴을 저장 할 수 있고, 저장한 패턴을 URL을 통해서 공유 할 수 있다. 또한 다른 사용자들이 공유한 다양한 패턴들도 쉽게 찾아서 이용 할 수 있다.


(2) REGEXPER


정규 표현식을 시각화해서 보여주는 도구다.


(3) Regular Expressions Tutorial


정규표현식의 튜토리얼을 진행할 수 있다.


(4) RegexOne


직접 테스트해보며 정규표현식을 공부해 볼 수 있는 사이트이다.




728x90

'Study > 용어' 카테고리의 다른 글

포터블 (Portable)  (0) 2018.08.23
호스팅  (0) 2018.08.21
Back-end  (0) 2018.08.20
Front-end  (0) 2018.08.19
앱태크  (0) 2018.08.09

댓글