Ich habe diesen Text:Aufnahme zwei Gruppen von Zahlen mit einem regulären Ausdruck
'BASE CÁL PREV SOC BASE CÁL 13º PREV SOC 01 672 1.653.806,08 18.512,98 1.667.621,57 2.647,38 07 23 12.965,11 0,00 12.965,11 0,00 13 5 10.517,81 0,00 10.517,81 0,00 TOTAIS: 700 1.677.289,00 18.512,98 1.691.104,49 2.647,38'
Das Originalformat ohne Leerzeichen ersetzt und Bruchlinien ist:
NUMBER OTHER OTHER OTHER BASE CÁL PREV SOC BASE CÁL 13º PREV SOC
01 672 1.653.806,09 18.512,98 1.667.621,57 2.647,38
07 23 12.965,11 0,00 12.965,11 0,00
13 05 10.517,87 0,00 10.517,81 0,00
TOTAL: 700 1.677.289,00 18.512,98 1.691.104,49 2.647,38
ich Informationen in der BASE CÁL PREV SOC
extrahieren möchten Spalte nur in den Zeilen 01 und 07, aber manchmal gibt es keine 07. Zeile 13 wird ignoriert.
Also ich möchte eine bestimmte Phrase und passende Gruppen in einem regulären Ausdruck haben.
Nur um klar zu sein, diese Daten sind in einem großen Text, so dass die Regex nicht generisch sein kann. Ich muss explizit einen eindeutigen Satz übergeben, der den Zahlen nahe kommt. Hier ist der gewählte Ausdruck 'BASE CÁL PREV SOC BASE CÁL 13º PREV SOC'
. Ich will nur die Zahlen in 01 und 07 (obwohl 07 wird manchmal nicht existieren), und ignorieren 13.
Nur um klarer zu sein, im aktuellen Beispiel erwarte ich das Ergebnis 1,667,621.57 und 12.965,11 .
Ich habe diesen Code:
var text = 'BASE CÁL PREV SOC BASE CÁL 13º PREV SOC 01 672 1.653.806,08 18.512,98 1.667.621,57 2.647,38 07 23 12.965,11 0,00 12.965,11 0,00 13 5 10.517,81 0,00 10.517,81 0,00 TOTAIS: 700 1.677.289,00 18.512,98 1.691.104,49 2.647,38';
var reg = new RegExp('BASE CÁL PREV SOC BASE CÁL 13º PREV SOC' + '\\b.*?(?:\\d\\S*\\s+){4}(\\d\\S*)(?:\\s?\\d\\S*\\s+){5}(\\d\\S*)', 'i');
var match = reg.exec(text);
console.log(match[1]);
console.log(match[2]);
Ich habe sicher sein, dass die Nummer 01 und 07, und wenn es keine 07 ist, ersetzen Sie es mit 00,00.
Ist das möglich?
'18.517,81' ist nicht in Ihrem Beispiel Daten. Meinst du '10.517,81'? –
Ich verstehe nicht, was du über 07 und 13 sagst. Wenn du nur an 01 und 07 interessiert bist, warum sollte es dann eine Rolle spielen, ob es eine 13 gibt oder nicht? Ignorierst du nicht 13 in allen Fällen? Im obigen Beispiel ist der Wert in 07 12.965,11. Erwarten Sie das nicht? –
Sorry, in meinem Beispiel ist 12.965,11, 18.517,81 ist in der 13 NUMMER, ich möchte ignorieren, wenn die Zahl 13 ist @RickHitchcock –