정규표현식에서 2 비탐욕은 필요한 최소 매칭만을 허용하는 방식으로, 반복 패턴이 가능한 한 많이 잡히는 기본 성질을 개선하기 위해 도입된다. HTML 태그처럼 중간에 반복 구조가 다수 나타날 때 탐욕적 매칭이 전체를 한 번에 잡아버려 원하는 결과를 얻지 못하는 문제가 생기므로, 수량자 뒤에 ?를 붙여 비탐욕 매칭으로 최소한의 범위만 찾도록 한다.
문자열 인코딩은 글자를 컴퓨터가 숫자 코드로 저장하는 규칙으로 이해하는 것이 핵심이다. 글자는 문자(Character)로 보이지만 컴퓨터는 이를 고유 번호인 코드포인트(Code Point)로 다루고, 파이썬 3의 문자열은 이 코드포인트의 모음이다. 유니코드는 문자에 번호를 부여한 표준이며, UTF-8은 그 번호를 저장하는 방식으로서 1에서 4바이트를 이용해 저장한다. 영어는 1바이트, 한글은 보통 3바이트, 이모지는 상황에 따라 4바이트를 사용하므로 모든 문자를 하나의 고정 크기로 저장하지 않는 것이 핵심이다. 인코딩과 디코딩은 저장·전송에 사용한 방식이 같아야 정상적으로 보이며, 다르면 글자가 깨지거나 오류가 발생한다.
주요 인코딩으로 CP949(EUC-KR 계열), UTF-16, UTF-8이 있다. CP949는 한국어 중심의 과거 환경에 주로 쓰였으나 다국어 환경에는 부적합하다. UTF-16은 2바이트를 기본으로 일부 문자는 4바이트가 필요하고, 과거 Windows 생태계에서 사용되었지만 웹·네트워크 전송에는 UTF-8이 더 널리 호환된다. 현재 표준으로 자리 잡은 UTF-8은 문자당 저장 크기가 1에서 4바이트로 달라지며, 전 세계 인터넷과 시스템에서 가장 효율적이고 호환성이 뛰어나므로 새로 다룰 때 기본값으로 선택된다. 인코딩은 문자 데이터를 사람이 읽을 수 있는 문자열에서 컴퓨터가 저장하고 전송하기 좋은 바이트 형태로 바꾸는 과정이며, 디코딩은 그 반대 과정이다.
정규화는 문자열 비교의 정확성을 높이는 필수 절차다. 보이는 글자는 동일해 보여도 내부적으로 여러 코드포인트 구성으로 저장될 수 있어 비교하면 다르게 나타난다. 이를 해결하는 방법으로 NFC와 NFD가 있는데, NFC는 여러 코드포인트를 가능하면 하나로 합쳐 저장하고 일반적인 비교에 사용하며, NFD는 하나의 문자를 기본 문자와 결합 문자로 분리해 저장한다. 실사용에서는 일반적인 비교·저장에 NFC를, 특수 목적의 텍스트 분석에는 NFD를 활용하는 경우가 많다.
#
Pythonregex
#
파이썬인코딩
#
파이썬문자열함수
#
파이썬문자열포맷팅
#
파이썬문자열처리
#
파이썬문자열슬라이싱
#
파이썬문자열메서드
#
파이썬문자열디버깅
#
파이썬문자열
#
파이썬fstring
#
텍스트전처리
#
데이터전처리파이썬
#
Python문자열
#
Pythonstring
#
파이썬정규표현식