티스토리 뷰

etc

Regular Expression (ide eclipse 사용)

keehyun2 2017. 6. 25. 16:19

패턴 있는 문자열 묶음을 간단하게 하나의 식으로 나타낸 것을 정규표현식이라고합니다. 참고로 정규표현식을 쓰는 방법은 프로그램별, 프로그래밍 언어별로 사용법이 조금씩 다릅니다. 정규표현식이 문자열 유효성 검사를 할때 자주 사용합니다. 예를 들어 전화번호 검증, 패스워드 특수문자 포함여부 등 에서 많이 활용되며, 이것들의 정규식은 인터넷에서 쉽게 찾을수 있고, 대부분 비슷한 패턴을 가지고 있습니다.

정규표현식을 활용한 문자열 치환을 통해서 개발 을 좀 편하게 했던 이야기를 해보겠습니다.

case 1 - mybatis cenvert

한번은 orm framework 인 ibatis 를 mybatis 로 전환 해야하는 작업진행 하였습니다. ( ibatis2mybatis 라는 것도 있었는데 그당시에는 몰랐네요. 사용해보진 않았습니다. )

프레임워크를 전환하면서 (resultClass -> resultType) 과 같은 문자열은 한번에 변경이 가능했지만, #reqNum#, #workName# 등과 같은 parameter 들은 일일히 #{reqNum}, #{workName} 으로 바꿔줘야합니다. 이 문자열들은 패턴있는데 모든 문자열들이 #으로 감싸져있고, #안에 들어가는 문자는 대소문자와 숫자, underscore 만 들어갈수 있습니다. 이를 정규식으로 만들어 보았습니다.

IDE eclipse 에서 문자열 find 창에서 regular expression 을 체크하고, #([A-Za-z0-9_]+)# 를 검색합니다. 그러면 #으로 감싼 대문자,소문자,숫자,under score 를 포함한 문자열을 찾습니다. 이를 #{\1} 로 replace 해줍니다. 그럼 () 안에 검색된 검색된 문자열이 \1 로 들어가서 치환됩니다.

case 2 - Sybase to Oracle 12c query convert

sybase 에서 사용하는 left 함수는 oracle 에서는 substr 으로 대체할수 있습니다. 아래와 같은 패턴으로 치화해주어야하는데, 이를 일일히하기 보다 정규표현식으로 일괄 처리하면 보다 빠르게 업무를 처리할수 있습니다.

left(칼럼,2) > substr(칼럼,1,2)

left\(([a-z0-9A-Z._'+]+)\,([a-z0-9A-Z._]+)\) 를 elclipse 에서 find 한 이후에 SUBSTR(\1,1,\2) 으로 replace 해줍니다.

참고

정규표현식 관련해서 참고하기 좋은 사이트가 있어서 링크 겁니다.

nexttree 블로그 에서 소개하고있는 웹으로 javasciprt 정규식을 테스트할수 있는 프로그램이 있는데 알아두면 활용도가 높을 것 같아서 링크겁니다. github 오픈소스인데, 받아서 실행해볼수도 있을것 같네요.

RegExr

community 기능도 있어서 다른 사용자들이 공유한 정규표현식을 볼수도 있습니다. 사용자들이 만든 정규식에 점수를 주는 기능이 있어서 점수가 높은 정규식을 찾아볼 수도 있습니다.

'etc' 카테고리의 다른 글

Building and Using PJSIP  (0) 2017.09.17
멀티 브라우저 제어(Selenium Grid)  (0) 2017.08.04
웹 테스트 자동화 (Selenium IDE)  (0) 2017.07.26
자동 업로드 Window Batch Script (SFTP)  (0) 2017.05.19
bat 프로그래밍  (0) 2016.04.14
댓글
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크