728x90

쉘에서 로그와 같은 텍스트 파일을 다룰때 정규표현식을 자주 사용하게 됩니다. 정규표현식을 지원하는 쉘의 도구들은 여러가지가 있는데요 오늘은 awk 에서 정규표현식을 사용하는 방법을 간단하게 살펴보겠습니다. 

 

// 일반적인 awk 의 사용 : 첫번째 컬럼 값이 server 인 경우 행($0)을 그대로 출력
$ cat my.log | awk '$1="server" { print $0 }'

// 정규표현식을 만족하는 행 찾기 (Positive Match) : /beta/
$ cat my.log | awk '/\/beta\// { print $0 }'

// 정규표현식을 만족하지 않는 행 찾기 (Negative Match) : /beta/ 가 아닌 경우
$ cat my.log | awk '!/\/beta\// { print $0 }'

 

일반적으로 awk 는 독립적으로 사용되지 않고 cat 과 같은 다른 명령과 파이프(|)로 연결해서 문자열을 다룹니다. 위 코드의 첫번째 예시는 awk 가 델리미터 단위로 행을 분할해주는 기능을 이용하여 첫번째 컬럼($1)의 값이 만족하는 경우 해당 행을 출력하는 명령입니다. 

 

정규표현식을 이용하려면 슬래시로 정규 표현식 문자열을 넣어주면 됩니다. 가령 URL 에 /beta/ 라는 path 가 존재할 수 있고, 해당 항목이 있는 경우만 출력한다면 \/beta\/ 로 표현식을 만들면 됩니다. 두번째 예시를 참고하시면 되겠습니다.

 

정규표현식을 만족하지 않는 Negative Match 로 자료를 찾아야 하는 경우도 있습니다. 이때는 정규 표현식을 감싸고 있는 슬래시의 앞에 느낌표(!)를 붙여주기만 하면 됩니다. 

728x90
728x90

정규표현식은 복잡한 조건 비교문 없이
패턴 단위로 문자열을 검증할 수 있어서 무척 유용하...지만...-_-;;
자주 사용하지 않으면 할 때마다 헷갈린다는 단점이 있다.

자바스크립트만 이용해서 사용자 입력값을 검증하는 것은
무조건 문제가 생길 수 있기 때문에 서버측 검증을 꼭 해야만 한다.
물론 서버측에서는 여러가지 다른 수단 (가령, 스토어드 프로시저 파라메터의 데이터 타입) 이 있기 때문에
자바스크립트에서 정규표현식 검증을 하고
서버단에서는 별도 Validation 을 하는 것도 좋은 방법이다

각설하고,

사용자 계정 생성시 자주 사용하게 되는 룰이 영문, 숫자만 허용하는 것인데
이를 자바스크립트 정규표현식을 사용하면 무척 간단하게 표현이 가능하다

var regType1 = /^[A-Za-z0-9]+$/;
혹은
var regType1 = /^[A-Za-z0-9]*$/;

 
영어는 대문자 소문자가 있기 때문에 두가지를 모두 식에 표현해 주어야 한다

var regType1 =/^[A-Za-z0-9]+$/;

혹은
var regType1 = /^[A-Za-z0-9]*$/; 

숫자도 0-9 라는 조건을 통해 필터링 할 수 있다

var regType1 = /^[A-Za-z0-9]+$/; 
혹은
var regType1 = /^[A-Za-z0-9]*$/; 

+ 는 대/소 영문자, 숫자가 한번 이상 나온다는 의미이며 
꺽쇠 바깥쪽의 별표(아스타리스크,*)는 꺽쇠 안의 조건이 0번 이상 반복된다는 의미이다
+와 *는 미묘하게 차이가 있지만 위의 목적으로는 어느것을 사용해도 무방하다

만약, 문자열 길이를 제한하고 싶으면 어떻게 하면 될까?
그 때는 브레이스({,})로 문자열 갯수를 지정해 주면 된다.

var regType1 = /^[A-Za-z0-9]{4,12}$/; 

위와 같은 식을 이용하면 4자 이상, 12자 이하의 문자열 필터링이 가능하다.
완성된 코드는 아래와 같다.

var regType1 = /^[A-Za-z0-9+]*$/;
if (regType1.test(document.getElementById('userid').value)) { alert('아이디가 조건에 맞지 않습니다'); }

참고로 정규표현식 관련된 책들중 얇고 부담 없지만 탄탄한 책은
한빛미디어에서 출간된 "처음 시작하는 정규표현식 Regular Expression" 을 추천한다 

[자세히보기]


- NoPD -

 

쿠팡 파트너스 활동을 통해 소정의 수수료를 지급받을 수 있습니다

 

728x90

+ Recent posts