Nodejs:RegExp什么都不返回

问题描述 投票:2回答:1

我正在尝试从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]) ;

我希望14个电极的输出为F3 : 8209等。

javascript node.js regex parsing
1个回答
0
投票

我知道这并不完全是回答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)
© www.soinside.com 2019 - 2024. All rights reserved.