파이썬 정규표현식 파씽 문의 올립니다
글쓴이: chocokeki / 작성시간: 월, 2021/02/15 - 10:13오전
파이썬에서 문자열 처리할 일들이 많아 검색을 해보니 정규표현식을 추천하더군요
3.x 환경에서 사용 중입니다.
일단 파일이 여러개 있는 환경인데 그걸 목록으로 가져오고 그 다음 필요없는 파일을 빼는 작업을 하는 중입니다.
목표
req로 이름이 시작하고 확장자가 bin 혹은 bbq인 파일 목록 획득 중에서 마지막 확장자가 md5면 제외해야 함
예시
files = ('req111.bin', 'reg222.bin.md5', 'reg333.bni', 'req444.bbq', 'req4444.tca') rexp = 'req.+[bin|bbq][^md5]$' p = re.compile(rexp) for index in files: m = p.search(index) if m: print(m.group(0))
결과
req111.bin
req333.bni -> 현재 문제를 겪고 있는 부분
req444.bbq
bin 뿐만이 아니라 bni도 목록에 포함되고 있는데요 []를 사용했기 때문에 문자 순서와 상관 없이 파씽이 되고 있는 것 같습니다
혹시 어떻게 해야할지 알 수 있을까요?
Forums:
[bin|bbq] 는 'b 또는 i 또는 | 또는 b
[bin|bbq] 는 'b 또는 i 또는 | 또는 b 또는 b 또는 q인 한 글자'에 해당하지 bin 이라는 문자열을 의미하지 않습니다.
일단 말씀하신 목표만 보면
정도가 되겠네요.
좋은 하루 되세요!
와우 감사합니다...
와우 감사합니다...
제가 실수로 md5 파일은 제외해야하는 것을 빼먹고 본문을 작성했는데 생각해보니 bin, bbq로 해놓으면 알아서 필터링이 되겠네요
정규표현식이 꼭 필요한가요?
정규표현식이 대체로 편리한 도구이긴 합니다만, 대체로 처음 접하고 나서 한동안 남용하게 되는 경우가 많습니다.
물론 뭐 남용한다고 당장 무슨 심각한 문제가 생기는 건 아닙니다만,
정규 표현식을 짜 넣어서 완성된 코드는 나중에 읽기 힘들고 유지 보수하기는 더 힘들죠.
꼭 정규표현식이 필요하겠다 싶지 않은 경우라면, 저라면 차라리 그냥 이런 식으로 짜는 걸로 만족하렵니다.
검색패턴이 복잡하지 않으니 이렇게만 하셔도 목적달성이
검색패턴이 복잡하지 않으니 이렇게만 하셔도 목적달성이 되겠습니다.
댓글 달기