Ich muss JSON-Zeichenfolge (die später zum Parsen von JSON verwendet wird) aus einer Protokolldatei extrahieren. Die Datei ist in diesem Format:JavaScript - JSON aus der Protokolldatei extrahieren
[16:11:20] some text
[16:11:20] some text
some text
some text
[
{
"description": "some text",
"elements": [{
"id": "some text",
"keyword": "some text",
"line": 20,
"name": "some text",
"steps": [{
"arguments": [],
"keyword": "some text ",
"result": {
"status": "passed",
"duration": 14884761888
},
"hidden": true,
"match": {
"location": "some text"
}
},
{
"arguments": [],
"keyword": "sometext ",
"name": "sometext",
"result": {
"status": "passed",
"duration": 463674
},
"line": 11,
"match": {
"location": "sometext"
}
}
],
"tags": [
{
"name": "@sometext-no",
"line": 7
},
{
"name": "@sometext",
"line": 8
}
],
"type": "sometext"
}
],
"id": "sometext",
"keyword": "sometext",
"line": 1,
"name": "sometext",
"tags": [],
"uri": "sometext"
}
][16:11:54] some text
[16:11:54] some text
Wie kann ich einen regulären Ausdruck in JavaScript konstruieren, die JSON Daten aus dieser Datei extrahiert werden, so dass es durch string.match verwendet werden kann(), um die gewünschte Ausgabe geben
Das Muster ich versuche ist, wie unten
var regExtract = /(\[\s+\{[\s\S]*\}\s+\]\s+\}\s+\]\s+\}\s+\])/;
var matchedJson = data.toString().match(regExtract)[1];
Also, ist das pat tern nicht funktioniert? Beachten Sie, dass '\ s +' "ein oder mehrere Leerzeichen" bedeutet. Das bedeutet, dass Ihr Muster nicht mit Ihrem Beispiel übereinstimmt. Sie haben auch das Ende Ihres Musters,} mehrmals. –
Hier ist ein Muster, das dem angegebenen Format entspricht: https://regex101.com/r/uU9oI0/1 –
Würde der "json" -Datenstring immer in einer separaten Zeile stehen? – RomanPerekhrest