※ 본 카테고리의 내용은 부스트캠프 챌린지 기간동안 학습한 내용을 바탕으로 정리한 내용입니다.
목차
0. Tokenizer, Lexer, Parser
토크나이저(Tokeniozer)란 어떤 구문에서 의미있는 요소들을 알맞은 토큰 단위로 나눠주는 기능을 말합니다.렉서(Lexer)는 나눠진 토큰들을 분석해 문맥적 의미를 부여하는 기능을 말합니다.(Tokenizer과 Lexer를 합해서 Lexer라고 부르기도 합니다!)파서(Parser)는 렉서에서 분석된 토큰들을 문법적으로 검사하고 Parse Tree형태로 만들어 주는 기능을 담당합니다.
1. DOM, HTML, XML
DOM(Document Object Moder)은 XML이나 HTML 문서의 각 항목을 계층적으로 표현하여 생성, 변형, 삭제할 수 있도록 돕는 인터페이스입니다.
다시 말해서 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용할 수 있게 연결시켜 주는 역할을 맡고 있습니다.
HTML(HyperText Markup Language)는 우리가 보는 웹페이지가 어떻게 구조화되어있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어입니다.
우리는 HTML을 이용하여 웹페이지를 직접 설계할 수 있고, HTML자료를 보는 것 만으로 웹페이지가 어떻게 구성되었는지를 쉽게 알 수 있습니다.
기본적으로 꺾쇠 괄호(<, >)에 둘러싸인 "태그"로 되어있는 HTML 요소를 이용해서 작성하게 됩니다.
XML(eXtensible Markup Language)는 W3C에서 개발된 다목적 마크업 언어입니다.
HTML과 굉장히 유사하지만 HTML처럼 데이터를 보여주는 목적이 아니라 데이터를 저장하고 전달할 목적으로만 만들어졌습니다.
또한 XML 태그는 HTML 태그와 다르게 미리 정의되어 있지 않고 사용자가 직접 정의할 수 있다는 특징도 가지고 있습니다.
2. XML과 JSON의 장단점
JSON(JavaScript Object Notation)은 키-값 쌍으로 이루어진 데이터 객체를 전달하기 위해서 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷입니다.
이름만 봐도 알 수 있듯이 Javascript에서는 Ecma에 의해 스크립트 엔진의 기본 기능으로 내장되어서 XML에 비해 월등히 좋은 성능을 낼 수 있습니다.
이제 JSON에 대해서 간략히 알아보았으니 XML과 JSON의 장단점에 대해서 자세히 살펴보겠습니다.
먼저 XML의 장점에 대해서 살펴보면 XML은 표현방식이 굉장히 자유롭고, HTML과 혼용할 수 있습니다.
또한 자료가 태그로 구분되어있기 때문에 태그만 봐도 쉽게 정보를 구분할 수 있습니다.
하지만 자유로운만큼 관계와 참조등이 떡칠(...)되어있어서 구분하기 더 어려운 경우가 있고, 텍스트 파일이라는 점 때문에 컴퓨터가 주로 사용하는 이진 데이터 형식보다 더 많은 용량을 차지하기 떄문에 오버헤드의 위험성이 존재합니다.
반면 JSON의 경우 내용이 굉장히 함축적이고, 최소한의 정보만 담고 있습니다.
이것은 XML에 비해 더 적은 용량으로 같은 자료를 다룰 수 있다는 말이 되고, 용량이 적은 만큼 속도도 빨라지게 되었습니다.
또한 구조적이기 때문에 가독성이 뛰어나고 구조를 정의하기에 XML에 비해 유리합니다.
하지만 JSON은 문법 오류에 굉장히 민감하기 때문에 한 번의 실수가 큰 손해를 불러일으킬 수도 있습니다. 또한 주석을 지원하지 않아서 설정 파일을 JSON으로 작성하는 것은 어렵습니다.
위 내용을 간략하게 정리하면 아래와 같습니다!!
※ XML의 장점
- 표현 방식이 자유로움
- HTML과 혼용 가능
- 태그를 이용하여 정보의 구분 용이
※ XML의 단점
- 정보량이 많아지면 구분이 어려워질 수 있음
- 큰 용량을 차지
# JSON의 장점
- 더 적은 용량과 빠른 속도를 지님
- 가독성이 뛰어나고 구조 정의에 유리
# JSON의 단점
- 문법 오류에 취약
- 주석을 달 수 없음
3. 정규표현식
정규표현식은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다.
보통 언어마다 정규표현식을 각각 가지고 있고, 대부분 비슷한 구조를 띠고 있습니다.
이런 정규표현식을 사용하면 특정 패턴에 매칭되는 문자열을 쉽게 찾아낼 수 있습니다.
- 정규표현식 매칭 패턴
패턴 | 의미 |
a-z, A-Z | 영어 알파벳 |
ㄱ-ㅎ, 가-힣 | 한글 문자 |
0-9 | 숫자 |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 등을 모두 포함합니다.) |
\d | 숫자 |
\D | 숫자 이외의 것 |
\w | 알파벳, 숫자, 언더스코어 |
\W | /w에 할당되지 않은 나머지 |
\s | 공백 |
\S | 공백 이외의 것 |
\특수기호 | 특수기호 |
- 정규표현식 검색 패턴
기호 | 의미 |
| | OR |
[] | 괄호 안의 문자들 중 하나 |
[^문자] | 괄호 안의 문자를 제외한 것 |
^문자열 | 특정 문자열로 시작 |
문자열$ | 특정 문자열로 끝 |
() | 그룹 검색 및 분류 |
(?: 패턴) | 그룹 검색(분류 X) |
\b | 단어의 처음과 끝 |
\B | 단어의 처음과 끝이 아님 |
아래 사이트에서 단계별로 실습해보며 정규표현식을 쉽게 익혀실 수 있습니다!! (다만 영어 주의!!)
RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs
Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac
regexone.com
+ 최소패턴일치, 최대패턴일치, 문자열 파싱에 대한 더 자세한 내용 추가 필요
최근댓글