본문 바로가기

IDE/IntelliJ IDEA

[정규식] 리팩터링 중 찾아바꾸기

정규식은 잘 배워두면 요긴하게 쓰일 경우가 많다.

 

Sublime Text

얼마전에 바이트 데이터를 0x 접두어를 붙여서 바꿔치기를 할 경우가 있었는데 이런 경우에 유용하게 썼다.

예를 들어 아래의 통신 데이터를 테스트 코드에서 사용하기 위해 byte[]로 만드려고 한다.

왠만한 텍스트 편집기라면 정규식 찾아 바꾸기가 지원된다.

이런 경우 두 자리의 숫자를 앞에 0x를 붙이고, 뒤에 콤마를 붙이면 된다.

Find: (.)(.)
Replace: 0x$1$2,

데모

 

IntelliJ IDEA

코드 리팩터링을 할 때도 유용하게 쓸 수 있다.

예를 들어 예외 클래스의 시그너처가 아래와 같이 바뀌었다고 하자. int 에서 HttpStatus enum으로

해당 값은 생성자를 통해 설정이 되는데, 생성자의 시그너처가 바뀌므로 이 예외를 생성하는 모든 곳을 바꿔야 한다.

이럴 경우도 정규식을 이용하면 유용하게 바꿀 수 있다.

 

아래와 같이 바꿔야 되는 것이 enum 값에 따라 여러가지라서 단순 찾아 바꾸기를 하려면 바꾸는 값의 개수만큼 replace를 해야 한다.

이럴 때 아래 정규식을 이용하면 한번에 바꿀 수 있다.

Find: Exception\(HttpStatus\.([A-Z_]+)\.value\(\)
Replace: Exception\(HttpStatus\.([A-Z_]+)\.value\(\)

도구를 잘 쓰면 시간을 절약해준다.