티스토리 뷰

유니스 명령어나 기타 많은 커맨드 명령어가 아래와 같은 형태를 띄게 됩니다.

find /usr/local -type f -name "member" -exec ls 


개발을 하다보면 경우에 따라서 공백을 기준으로 배열에 담아야 할 경우도 종종 생기게 됩니다.

자바스크립트에서 위 명령어 문자열을 공백을 구분해서 나누어 담는다면 split 메소드와 정규식을 이용해서 아래와 같이 쉽게 처리할수 있습니다.


1
2
3
4
5
6
7
var command = 'find /usr/local -type f -name "member" -exec ls'
 
var comSplit = command.split(/\s+/); //정규식 \s+ 한개이상의 (공백)
 
console.log(comSplit);
 
 
cs


결과:

["find", "/usr/local", "-type", "f", "-name", ""member"", "-exec", "ls"]



그런데 만약에 명령어 파라메터값 자체에 "member list" 처럼 공백이 들어가게 된다면 쉽게 해결할수가 없습니다.

1
2
3
4
5
var command = 'find /usr/local -type f -name "member list" -exec ls'
 
var comSplit = command.split(/\s+/);  //정규식 \s+ 한개이상의 (공백)  
 
console.log(comSplit);
cs


결과:

["find", "/usr/local", "-type", "f", "-name", ""member", "list"", "-exec", "ls"]



위와 같이 파라메터에 공백이 존재할경우 사용할수 있는 정규식은 아래와 같습니다.


1
2
3
4
var command = 'find /usr/local -type f -name "member list" -exec ls'
var comSplit = command.split(/\s+(?!\w+")/);
console.log(comSplit);
cs


결과:

["find", "/usr/local", "-type", "f", "-name", ""member list"", "-exec", "ls"]


정규식을 하나씩 풀어보면 

\s+(?!\w+")

\s+   : 한개이상의 공백문자열

(?!)   : 부정형 전방탐색

\w+" : 한개이상의 문자열에 더블쿼터(") 로 끝나는 문자열이 아닌 문자열


붙혀서 읽어보면 

\s+[1개이상의 공백인데](?! \w+" [1개이상의문자열에 더블쿼터로 끝나는문자] )[1개이상의 문자열이면서 더블쿼터로 끝나는 문자열이 아닌 문자열의 앞]




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크