C.W.K.
Stream
Lesson 09 of 12 · published

파일 경로

~8 min · paths, files

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

Unix 와 Windows 가 다르게 살아

Unix 경로가 / 사용; Windows 가 \ (다양한 escape 와) AND / (현대 Windows 가 둘 다 받음). 둘 다 정규식이 어색. 가능하면 본인 언어 path 라이브러리.

흔한 패턴

Unix-style 경로 매칭:

(?:/?[\w.-]+)+/?

Extension 있는 파일명 매칭:

([\w-]+)\.(\w+)$

Extension 만 매칭 (마지막 점 후):

\.([^.]+)$

문자열의 모든 경로 매칭:

(?:\./|/|~/)[\w./-]+

./, /, 또는 ~/ 로 시작; 그 다음 path-친화 글자.

수동 split 을 라이브러리로 교체

Python pathlib.Path.name, .stem, .suffix, .parent, .parts 줘 — 정규식 불필요.

JS (path 모듈), Go (path/filepath) 도 동일. 실제 path 조작엔 라이브러리 손 뻗기. 정규식이 더 큰 텍스트의 path-shape 부분 문자열 찾기에만.

Code

경로 패턴·python
import re
from pathlib import Path

# 텍스트에서 경로 찾기
PATH_FIND = re.compile(r'(?:\./|/|~/)[\w./-]+')
re.findall(PATH_FIND, 'edit /etc/hosts and ./local.cfg and ~/Documents/notes.md')
# ['/etc/hosts', './local.cfg', '~/Documents/notes.md']

# 정규식으로 extension 추출
EXT = re.compile(r'\.([^.]+)$')
m = EXT.search('photo.tar.gz')
m.group(1)  # 'gz'  — 마지막 extension 만

# 더 좋음: pathlib 사용
p = Path('photo.tar.gz')
p.suffix    # '.gz'
p.suffixes  # ['.tar', '.gz']
p.stem      # 'photo.tar'
p.name      # 'photo.tar.gz'
p.parent    # PosixPath('.')

# Extension 없는 파일명
FNAME = re.compile(r'([\w-]+)\.(\w+)$')
m = FNAME.search('photo.jpg')
print(m.group(1), m.group(2))  # 'photo' 'jpg'

External links

Exercise

디렉토리 읽고 정규식 매칭 (예: 'log' 시작, '.txt' 끝) 모든 파일 print 하는 스크립트 작성. 리스팅엔 pathlib.Path.iterdir, 이름 필터엔 정규식.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.