RegEx - 在模式之间查找字符串

时间:2018-04-20 13:02:31

标签: javascript regex

我是Regex的新手,我正在努力寻找模式中的字符串。

我有这个字符串:

{"linha":""},
{"linha":"              REDE GETNET"},
{"linha":"               SANTANDER"},
{"linha":""},
{"linha":"20/04/15 09:07:32 AUT:006299 DOC:000235"},
{"linha":"EC:000000000370484 TERM: T0385403    M"},
{"linha":"CV:010000024       CAIXA:00003333"},
{"linha":""},
{"linha":"CARTAO              ************2125"},
{"linha":""},
{"linha":"            CREDITO A VISTA"},
{"linha":"VALOR:        12,00"},
{"linha":""},
{"linha":"  ______________________________"},
{"linha":"         ASSINATURA"},
{"linha":""}, 
{"linha":""},
{"linha":"CUPOM: 00000000000000        MAC: 9235"},
{"linha":"NSU_CTF: 001899  LOJA: 0019  PDV: 897"},
{"linha":""},
{"linha":""}

我想找到之间的发生:

{"linha":

},

在冒号后只用双引号获取字符串。

到目前为止,我的正则表达式是:

(\{".*(linha).[:])

而且只有

{"linha":

有人能帮助我吗?我打算用javascript来做。

2 个答案:

答案 0 :(得分:1)

据我所知,该示例是JSON,因此您应该使用JSON方法来获取所需的数据。但是,如果由于任何原因你被“强迫”使用正则表达式,那么这样的事情可能会起作用:

/\{\s*\"linha\"\s*\:\s*\"(.*)\"\}/g

您可以对其进行测试here,并且对于(至少){"linha": " \" \" "}它也是健壮的,并且它也匹配{ "linha": ""}。当然,在某些情况下,此正则表达式无法正常工作(例如,它不会获取数值,只能获取字符串)。

因此,再次,您应该真正检查JSON。这是惊人:)

答案 1 :(得分:1)

Javascript中的解决方案:

使用Regex:

var input_str = '{"linha":""},{"linha":"              REDE GETNET"},{"linha":"               SANTANDER"},{"linha":""},{"linha":"20/04/15 09:07:32 AUT:006299 DOC:000235"},{"linha":"EC:000000000370484 TERM: T0385403    M"},{"linha":"CV:010000024       CAIXA:00003333"},{"linha":""},{"linha":"CARTAO              ************2125"},{"linha":""},{"linha":"            CREDITO A VISTA"},{"linha":"VALOR:        12,00"},{"linha":""},{"linha":"  ______________________________"},{"linha":"         ASSINATURA"},{"linha":""}, {"linha":""},{"linha":"CUPOM: 00000000000000        MAC: 9235"},{"linha":"NSU_CTF: 001899  LOJA: 0019  PDV: 897"},{"linha":""},{"linha":""}'
var re = new RegExp('linha*\":(".*")', 'g'); 
var myArray;
while ((myArray = re.exec(input_str)) !== null) {
  var msg = 'Found ' + myArray[1];
  console.log(msg);
}

使用JSON.parse :请注意我已添加[]以将字符串包装为JSON数组。

var input_str1 = '[{"linha":""},{"linha":"              REDE GETNET"},{"linha":"               SANTANDER"},{"linha":""},{"linha":"20/04/15 09:07:32 AUT:006299 DOC:000235"},{"linha":"EC:000000000370484 TERM: T0385403    M"},{"linha":"CV:010000024       CAIXA:00003333"},{"linha":""},{"linha":"CARTAO              ************2125"},{"linha":""},{"linha":"            CREDITO A VISTA"},{"linha":"VALOR:        12,00"},{"linha":""},{"linha":"  ______________________________"},{"linha":"         ASSINATURA"},{"linha":""}, {"linha":""},{"linha":"CUPOM: 00000000000000        MAC: 9235"},{"linha":"NSU_CTF: 001899  LOJA: 0019  PDV: 897"},{"linha":""},{"linha":""}]'
var parsed_json = JSON.parse(input_str1); 
console.log(parsed_json);
parsed_json.forEach(x => console.log(x.linha))