eclipse 정규표현식을 이용한 문자열 일괄 치환

업무상 진행중인 프로젝트에서 기존에 작업했던 url을 /myxxx/ 에서 /mypage/로 일괄 변경해야 하는 이슈가 발생해서, 해결 과정을 정리함.

우선 이클립스에서 변경하고자 하는 프로젝트를 선택하고, ctrl + H 로  Search 창을 열어서.. File Search 탭으로 이동하고, 정규표현식을 이용할 것이니, regular expression을 체크한다.

그리고 Containing text에 찾고자 하는 문자열을 입력한다.
일단 현재 진행중인 프로젝트에서는 다음과 같은 경로들이 존재했다.

http://www.test.com/myxxx/test.do
http://www.test.com/myxxx/include/test.do
http://www.test.com/myxxx/popup/test.do

위의 문자열을 찾기 위해서 다음과 같은 정규표혀식을 이용하면 검색이 가능하다.

\ /myxxx\/[A-Za-z0-9._\/]*do
풀어보면 /를 문자열로 검색하기 위해서 \를 추가한거고…..
[ ] 안의 의미는 대문자 A-Z, 소문자 a-z, 숫자 0–9, 그리고 .(dot), _, / 가 포함된 경우이고….
위와같이 적어서 검색을 해보면……..원하는 패턴의 문자열을 찾을 수 있다.

예로 아래의 문자열에서 myxxx를 mypage로 변경하고자 할때 다음과 같은 방법으로 변경이 가능하다.

http://www.test.com/myxxx/include/popup_test/test.do

Containing text : (\ /)myxxx(\/[A-Za-z0-9._\/]*do)
()로 묶은 부분은 나중에 치환시 () 하나당 \1, \2로 대체할 수 있다.

위와같이 입력 후 Replace 버튼을 누르면 패턴에 해당하는 문자열을 먼저 검색하고…
변경할 문자열을 입력하는 창이 나오는데 여기서….
\1mypage\2 로 입력하는 경우……처음 검색대상 문자열에서 ()로 묶었던 부분은 그대로 두며, 가운데 myxxx 부분만 mypage로 변경이 가능하다.

말은 쉽고, 이론도 쉽고, 실천도 쉬웠지만…..언제 그러하듯 예상치 못한 패턴이 있기 마련인지라 추가적으로 약간의 노가다를 더해야 하는 번거로움이 있었으나…….
수천개에 달하는 링크 중에서 수십개 정도만 누락되다보니…….나머지는 그냥 수작업으로 고쳐서 해결….

처음부터 확실히 했어야 했는데, 중간에 url을 바꾸는건…위험부담이 좀 있는………..