text/Python

날짜 문자열 regex로 제거 정리글

hoonzii 2021. 9. 7. 10:11
반응형

기사 나 블로그 보면 제목에 날짜를 집어넣는 경우가 있다. (ex. 202X년 X월 X일 시황)

날짜는 굳이 필요없을때 제거할려고 regex 사용했다. 

 

기사나 블로그 제목들 전부를 살펴본건 아니지만 자주 등장하는 패턴을 눈으로 보고 대충 정리하자면

 

  1.  년월일 들어간 경우
    • 21년8월25일
    • 2021년 8월 25일
    • 8월 25일
  2. 년월일 대신 기호를 넣는경우
    • 21.8.25 or 21.08.25 or 08.25
    • 21-8-25 or 21-08-25 or 08-25
    • 21/8/25 or 21/08/25 or 08/25
  3. 아무것도 없는 경우
    • 20210825 or 21825

이정도로 대충 등장하는걸 확인할 수 있었다. 

 

자주 찾아보는 regex 문법 사이트는 

https://wikidocs.net/4308 

 

07-2 정규 표현식 시작하기

[TOC] ## 정규 표현식의 기초, 메타 문자 정규 표현식에서 사용하는 메타 문자(meta characters)에는 다음과 같은 것이 있다. > ※ 메타 문자란 원래 ...

wikidocs.net

 

내가 짠 regex가 제대로 동작하는지 확인하는 사이트는

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

하나씩 짜보자.

1번의 경우,

String pattern = "\\d{2,4}년[\\s]?\\d{1,2}월[\\s]?\\d{1,2}일";

regexr 동작 확인

\d는 숫자,

{2,4}는 2자리에서 4자리까지 허용,

[\s]는 띄어쓰기

?는 해당 문자가 있을수도 없을수도 있음 을 나타낸다.

 

엥? 그럼 08월 25일의 경우 위 식으로 걸러낼수 없는데

앞에 년도 부분을 ? 처리

앞에 년도 부분을 한덩이로 묶어서 ? 처리 해주게 되면 1번 패턴 전부를 처리할수 있게 된다.

String pattern = "(\\d{2,4}년[\\s]?)?\\d{1,2}월[\\s]?\\d{1,2}일";

 

2번의 경우,

년월일 자리에 기호를 바꿔 집어넣으면 해결될 것 같이 보인다.

하지만 년월일과는 다르게 "." , "/" , "-" 등 기호가 여러개다. 

String pattern = "(\\d{2,4}[-|.|\\s|/]?)?\\d{1,2}[-|.|\\s|/]?\\d{1,2}";

regexr 동작 확인

년월일 자리에 [-|.|\s|/] ("-" or "." or "\s" or "/") 기호패턴을 넣어서 처리하게끔 변경하고

? 를 집어넣어서 없더라도 동작하게끔 변경했다.

3번의 경우도 같이 해결된 것을 볼수 있다.

 

 

날짜 역시 제거 할때마다 찾아보길래 다음엔 긁어서 사용하기 위해 남겨본다.

반응형