2016-07-05 5 views
1

아래에 설명 된 값을 추출하기 위해 다음 문자열로 구문 분석하는 가장 좋은 방법은 nodeJS입니다.nodeJS의 문자열에서 일부 값을 파싱

client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175) 

현재 코드 :

c_ip: 130.225.244.66 

sdomain: paul 
+0

c_ip의 길이와 쿼리 구조에 대해 가정 할 수있는 가정은 무엇입니까? –

+0

c_ip는 항상 IPv4입니다. –

답변

2

이 매우 귀하의 입력 문자열이 도착하지만 항상 변화하는 경우가 더이

var task = "client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175)" 
 

 
var c_ip = task.split("client ")[1].split("#")[0] 
 
var sdomain = task.split("query: ")[1].split(".")[0] 
 

 
console.log("c_ip:", c_ip) 
 
console.log("sdomain:", sdomain)

처럼 뭔가를 할 수 같은 형식이 가정 방법에 따라 달라집니다 더 많이 사용할 수 있습니다 정규식. @ jens-habegger의 좋은 예가 있습니다

+0

그것은 그다지 변종이 될 수 없습니다. 당신의 코드를 사용하기 전에 하위 영역이 아닌 다른 공백이있는 것처럼 보입니까? 나는 첫번째 지위를 편집했다. –

+0

이것은 아마도 정규식을 사용하여 내 대답보다 빠릅니다. –

+0

@peke_peke 참으로. 'query :'끝에는 추가 공간이 필요했습니다. 이제 작동합니다. 여전히 남아있는 공간은'console.log()'함수를 기반으로합니다 – arcs

0

를 사용하여 기본 정규식 :에

//parsing 
var c_ip = data.split("client ")[1].split("#")[0] 
var sdomain = data.split("query:")[1].split(".")[0] 

console.log("c_ip: " + c_ip + '\n');  
console.log("sdomain: " + sdomain + '\n'); 

결과

var string = "client 111.222.333.44#59699: query: jadssdffsdnisa.website.com IN A -ED (81.11.11.175)" 

var c_ip_reg = /client\s(.*)#/; 
var c_ip = string.match(c_ip_reg); 

var sdomain_ref = /query:\s(.*?)\/; 
var sdomain = string.match(sdomain_ref); 

내가 알고 있어요이 다중으로 단축 할 수 그룹 일치,하지만 가독성을 위해서 가능한 한 장황하게 울려 퍼졌다.

.

관련 문제