티스토리 뷰
유니스 명령어나 기타 많은 커맨드 명령어가 아래와 같은 형태를 띄게 됩니다.
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개이상의 문자열이면서 더블쿼터로 끝나는 문자열이 아닌 문자열의 앞]
'Web Development' 카테고리의 다른 글
[Tool] 무료 온라인 이미지 편집 Vectr (0) | 2018.01.25 |
---|---|
[Git] 윈도우에서 gitignore 파일 만들기 (0) | 2018.01.23 |
[javascript] 얕은복사(ShallowCopy) vs 깊은복사(DeepCopy)복사 in Javascript (0) | 2018.01.18 |
[javascript] 자바스크립트 프로토타입(Prototype)만 쉽게 이해하기 (0) | 2018.01.15 |
[웹개발] 'Access-Control-Allow-Origin' & SOP & CORS (1) | 2018.01.09 |
- Total
- Today
- Yesterday