카테고리 없음

정규표현식, JSON과 XML의 공통점과 차이점

jay20033 2024. 7. 18. 02:43

정규표현식

정규표현식이란

특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어.

어떤 문자열에서 특정한 조건의 문자열을 찾고 싶을 때, 그 조건이 복잡한 경우 유용.

 

정규 표현식 문법

  • ^ : 문자열의 시작을 의미.
  • $ : 문자열의 끝을 의미.
  •  : 문자 한 개를 의미. '.'이 위치한 곳에 어떤 문자든지 1개의 문자가 들어감.
  • [ ] : 대괄호에 있는 문자 중 한 개를 의미. [abc]는 a, b, c 중 하나를 선택.
  • [^] : not의 의미로, 대괄호에서 쓴다면 [^abc] : a, b, c 제외하고 나머지를 의미.
  • : or을 의미. a|b : a 또는 b.
  • () : 공통되는 부분을 묶을 때, 서브 패턴을 지정할 때 사용. abc|abd -> ab(c|d)로 바꿀 수 있음.
  • : 문자가 0회 또는 1회 등장. a? b는 a가 나올 수도, 없을 수도 있음. ab, b.
  • : 문자가 0회 이상 등장. a*b : b, ab, aaab, aaab..
  • + : 문자가 1회 이상 등장. a+b : ab, aab, aaab..
  • {n} : 문자가 n개 나옴. a {2} b : aab
  • {n,} : 문자가 n개 이상 나옴. a {2,} b : aab, aaab, aaaab..
  • {n, m} : 문자가 n개 이상 m개 이하로 나옴. a {1,3 } b : ab, aab, aaab
  • \s : 공백 제거
  • \t : 탭
  • \d : 숫자, [0-9]와 동일
  • \b : 단어의 경계, 문자 사이의 공백
  • \w : 알파벳이나 숫자, [a-zA-Z0-9_]와 동일
  • 위의 \s, \t, \d, \b, \w는 대문자로 바꾸면 반대 의미가 됩니다. 

 

정규 표현식 사용해보기

1. Regex 클래스의 생성자 이용

val regex = Regex("[0-9|a-z]")

 

2. String 클래스의 확장 함수 toRegex() 이용

val regex ="[0-9|a-z]".toRegex()

 

3. 삼중 따옴표를 이용한 정규식 처리

  • 삼중 따옴표 안에서는 이스케이프 문자를 따로 처리할 필요가 없습니다.
val regex = """\([A-Z]\w+\)""".toRegex()

 

find()

- 정규식과 일치하는 첫 번째 요소를 찾을 때 사용하는 함수

 

findAll()

- 정규식과 일치하는 모든 요소를 찾고 싶을 때 사용하는 함수

 

JSON과 XML의 공통점과 차이점

1. XML

  • XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어입니다.
  • XML은 EXtensible Markup Language의 약자로, 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있습니다.

2. XML의 특징

  • XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어입니다.
  • XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해줍니다.
  • XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋습니다.
  • XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 합니다.
  • XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어집니다.

3. XML 목적

  • 서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 시간과 노력이 발생합니다.이렇게 데이터를 변환하는 과정에서 데이터의 손실이 발생하는 경우도 종종 있습니다.
  • 하지만 XML은 데이터를 텍스트 형식으로 저장하므로, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있습니다.
  • 따라서 XML을 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할 수 있습니다.

4. JSON

  • JSON은 JavaScript Object Notation의 약자입니다.
  • JSON은 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준입니다.
  • JSON은 자바스크립트를 기반으로 만들어졌습니다. 자바스크립트에 대한 기초 지식이 있으면 배우기 수월합니다.
  • JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었습니다.
  • JSON은 텍스트 기반이므로 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있습니다.

5. JSON의 특징

  • JSON은 자바스크립트를 확장하여 만들어졌습니다.
  • JSON은 자바스크립트 객체 표기법을 따릅니다.
  • JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다.
  • JSON은 프로그래밍 언어와 운영체제에 독립적입니다.

6. JSON과 XML의 공통점

  • 데이터를 저장하고 전달하기 위해 고안되었습니다.
  • 사람도 쉽게 읽을 수 있습니다.
  • 계층적인 데이터 구조를 가집니다.
  • 다양한 프로그래밍 언어에 의해 파싱될 수 있습니다.
  • XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있습니다.

7. JSON과 XML의 차이점

  • JSON은 종료 태그를 사용하지 않습니다.
  • JSON의 구문이 XML의 구문보다 더 짧습니다.
  • JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있습니다.
  • XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있습니다.
  • XML은 XML 파서로 파싱되며, JSON은 자바스크립트 표준 함수인 eval() 함수로 파싱됩니다.