반응형

프로젝트를 진행하면서 가끔 전체적인 코드에 대해 Replace를 해야 하는 경우가 있다. 한 가지의 방법을 여기저기서 쓰다 보면, 전체 검색을 했을 경우 1000개 이상의 코드에서 사용되는 것을 볼 수 있다. 이럴 때, 1개씩 변환을 하자니 엄청난 노가다를 하게 되므로, 이 때 사용하는 것이 정규식이다.

 

예전에 프로젝트에서 IBatis를 MyBatis로 변환을 하면서 정규식을 사용하여 문법을 MyBatis 기준으로 바꿨었다. 이 때 사용한 방법도 정규식을 이용한 변환이었다.

https://yongku.tistory.com/entry/IBatis%EC%97%90%EC%84%9C-MyBatis%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%A0-%EB%95%8C-XML-%EB%B3%80%ED%99%98-%EC%BD%94%EB%93%9C-1

 

IBatis에서 MyBatis로 변환할 때, XML 변환 코드

츄르사려고 코딩하는집사입니다. IBatis의 xml 동적 태그를 MyBatis xml 동적 태그로 변환하는 코드입니다. 이클립스에서 replace를 할 때, 아래 정규식을 이용하면 동적 태그들을 바꿀 수 있습니다. 아

yongku.tistory.com

 

여기서는 정규식을 쓸 때 주의해야 하는 것들에 대해 작성을 한다.


자바(Java) 기준 정규식 작성법 정리

정규식을 작성하기 전에 가장 먼저 해야하는 것이 정규식으로 바꿀 코드의 구조를 파악해야 한다.

 

최근에 작업한 것을 가지고 보겠다.

아래의 코드를 보자.

AES256(A.TESTCOLUMN, 'D')

 

위의 코드에서 AES256과 소괄호('(',')'), 콤마(,), " 'D' "를 지우려고 한다. 그러면, 여기서 어떤 변수를 남길 것인지에 대해 구분을 해줘야 한다. 여기서, 나는 A.TESTCOLUMN을 남기려고 한다.

 

즉, 아래와 같이 바꾸려고 한다.

AES256(A.TESTCOLUMN, 'D') -> A.TESTCOLUMN
-- 변환 전
SELECT AES256(A.TESTCOLUMN, 'D')
  FROM DUAL
  
-- 변환 후
SELECT A.TESTCOLUMN
  FROM DUAL

 

1. 가장 먼저, 남기고 싶은 변수는 소괄호로 감싸준다. 소괄호로 감싸주면 아래와 같이 된다. 소괄호를 사용하게 되면 소괄호 안의 내용은 1개의 변수로 사용이 된다. 나중에 $1, $2 ... 이렇게 사용하여 그 값만 가져올 수 있다.

AES256((A.TESTCOLUMN), 'D')

 

2. 정규식에서 특수 문자들은 문법과 겹치는 경우가 많다. 위의 코드에서도 소괄호는 변수를 감싸주거나 할 때 사용이 되는데, 소괄호라는 문자를 인식하기만 해야하는 경우도 있다. 즉, 소괄호로 저 문자를 찾아야 하는 경우가 있다. 그럴 경우에는 특수문자 앞에 \(백슬래쉬)를 넣어주면 된다.

AES256\((A.TESTCOLUMN)\, 'D'\)

 

위와 같이 하게 되면, 'AES256('까지는 문자로 인식하게 되고, 그 다음 (A.TESTCOLUMN)은 변수, 콤마(,)와 'D'는 문자, 소괄호는 문자로 인식하게 된다.

 

3. 이제는 변수 안에 들어가는 것에 대해 정규식으로 변환을 하면 된다. 여기서, [A-Z]만 하게 되면, 1글자만 인식을 한다. 그렇기 때문에 *를 추가하여 다른 문자들도 인식을 할 수 있도록 해주고, 점(.)도 문자로 인식을 해야 하기 때문에 앞에 백슬래쉬(/)를 넣어준다. 그 뒤로도 알파벳을 인식하게 정규식을 만들어 주면 된다.

AES256\(([A-Z]*\.[A-Z]*)\, 'D'\)

 

4. 이제 정규식으로 검색이 끝났으니, 이클립스에서 한 예시를 보고 나서, Replace를 할 것이다.

 

1) CTRL + H 를 눌러서 우측에 Regular expression을 체크하고, 정규식을 입력한다.

 

그러면 위와 같이 해당하는 문자가 검색이 된다.

 

 

하단의 [Search] 탭에서 오른쪽 클릭 후, [Replace Selected...]를 누르거나, CTRL + H를 눌렀을 때, 중앙 하단에 Replace...를 누르면 아래와 같이 나온다.

 

 

여기서, 아래의 사진을 보면 $1에 대해 더 쉽게 이해할 수 있다. 우리가 A.TESTCOLUMN을 소괄호로 감싸서 변수 1개로 만들었다. 이 숫자는 앞에서의 숫자다. 여기서, 'D'를 소괄호로 감싸면 $2가 된다.

 

 

이렇게, 변수를 어떻게 그룹을 지어 소괄호로 감싸느냐에 따라 값이 달라진다.

 

이런식으로, 정규식을 쉽게 바꿀 수 있고, 정규식을 짜보거나 이해를 할 줄 안다면 다른 것을 할 때 정말 많이 유용하게 사용할 수 있다.


반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기