Nodejs: RegExp ничего не возвращает - PullRequest
2 голосов
/ 05 апреля 2019

Я пытаюсь извлечь названия электродов и их значения из вывода Emotiv. Однако приведенный ниже код ничего не возвращает.

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

Вот мой код:

var str = '"levels":{"F3":7094,"FC6":8209,"P7":12165,"T8":5380,"F7":1356,"F8":2043,"T7":11882,"P8":10117,"AF4":13257,"F4":6134,"AF3":13527,"O2":9686,"O1":871,"FC5":1808},"' ; 
    const reg = new RegExp('.{2}\w\"\:\d{3,5}/g'); 
    var test = str.match(reg) ; 
    if (test)   
       console.log(test[1]) ;

Я ожидаю, что выход будет F3 : 8209 и так далее для 14 электродов.

1 Ответ

0 голосов
/ 08 апреля 2019

Я знаю, что это не совсем ответ на вопрос RegExp, но это переписывание должно заставить вас работать быстрее.

const text = '"levels":{"F3":7094,"FC6":8209,"P7":12165,"T8":5380,"F7":1356,"F8":2043,"T7":11882,"P8":10117,"AF4":13257,"F4":6134,"AF3":13527,"O2":9686,"O1":871,"FC5":1808},"';

let json = "{" + text.substring(0, text.length - 2) + "}"
let obj = JSON.parse(json)

for (const [key, value] of Object.entries(obj.levels)) {
  console.log(`${key} ${value}`); 
}

Я также придумал новый RegExp, который, я думаю, даст вам то, что вы хотите.

const text = '"levels":{"F3":7094,"FC6":8209,"P7":12165,"T8":5380,"F7":1356,"F8":2043,"T7":11882,"P8":10117,"AF4":13257,"F4":6134,"AF3":13527,"O2":9686,"O1":871,"FC5":1808},"';

let regexp = /\"([^\"]{2,3})\"\:(\d{3,5})/g
let r = null
do {
    r = regexp.exec(text)
    if (r) console.log(`${r[1]} ${r[2]}`); 
} while (r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...