2016-07-05 6 views
1

Как лучше всего в nodeJS проанализировать следующую строку, чтобы извлечь значения, описанные ниже?разбор некоторых значений из строки в узлеJS

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

Текущий код:

//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'); 

Результаты в:

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

Использовать базовый регулярное выражение:

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); 

Я знаю, это может быть сокращен в мульти- групповой матч, но ради удобочитаемости я попытался быть максимально подробным.

.

 Смежные вопросы

  • Нет связанных вопросов^_^