2017-03-07 1 views
2

ich Regex ist selten, und ich habe es auf regex101.comWie kann ich diese Regex schreiben, ohne einen Blick hinter die Verwendung wird nicht unterstützt

Aber ich habe versucht, es zu benutzen und es sagt, dass es nicht zur Arbeit gekommen unterstützt von JS ist es das, was ich habe

/(?<=[\]|>])(.*?)(?=$|\n)/g

https://regex101.com/r/sxUoDr/1

Wie kann ich hinter den Blick ersetzen, so dass es gut funktionieren wird?

Dies sind die Daten, die ich zu analysieren, ich versuche:

<100>11m 
[RIP]25s 
[RIP] 2m 
[RIP] 7m 
[RIP] 1m 
[RIP]12s 

Ich versuche, die mal weg

+0

https://regex101.com/r/sxUoDr/2 –

+0

Vielleicht ist ein einfaches '[^> | \] \ n] + (? = \ N | $)' genug, aber das hängt stark von Ihren Daten ab Es funktioniert nur, wenn Ihre Rahmenzeichen nicht in den Daten enthalten sein können, die Sie extrahieren möchten. –

+0

@AshishRanjan https://meta.stackexchange.com/q/230676/352329 Bitte senden Sie Ihr Muster als Antwort, das ist Wie funktioniert SO? Kommentare dienen der Klärung/Verbesserung. Bitte tun Sie Ihren Teil, um SO sauber zu halten und Ihren Kommentar zu löschen. – mickmackusa

Antwort

-1

Javascript nicht unterstützt Lookup hinter zu extrahieren. Sie können positive Lookups verwenden.

Regex: /(?=\d+(m|s)).*$/gm

Regex demo

0

In Javascript kein Blick hinter ist, aber wenn Sie wollen 'Extrakt' alle Daten, die Sie verwenden können RegExp#exec:

const data = `<100>11m 
 
[RIP]25s 
 
[RIP] 2m 
 
[RIP] 7m 
 
[RIP] 1m 
 
[RIP]12s` 
 

 
const getData = data => { 
 
    const regex = /[ >\]]\s*(.*)/g 
 
    const found = [] 
 
    let temp 
 
    while(temp = regex.exec(data)){ 
 
    if (temp[1]) found.push(temp[1]) 
 
    } 
 
    return found 
 
} 
 

 
console.log(getData(data))

Und wenn Sie es ersetzen möchten, müssen Sie nur tha hinzufügen t Extra ausgewählt char zurück:

const data = `<100>11m 
 
[RIP]25s 
 
[RIP] 2m 
 
[RIP] 7m 
 
[RIP] 1m 
 
[RIP]12s`.replace(/([ >\]])\s*(.*)/g, '$1 found [$2]') 
 

 
console.log(data)

0

ohne Verwendung eines Blick hinter lässt .*\W(\w+)(?:\n|$) verwenden, um Ihre Ergebnisse zu erhalten. Regex Demo: https://regex101.com/r/zbvmfp/1

JavaScript Demo

var pattern = /.*\W(\w+)(?:\n|$)/g; 
 

 
var str = `<100>11m 
 
[RIP]25s 
 
[RIP] 2m 
 
[RIP] 7m 
 
[RIP] 1m 
 
[RIP]12s`; 
 

 
var result; 
 

 
while (result = pattern.exec(str)) { 
 
    console.log(result[1]); 
 
}

0

Ich glaube nicht, es als dies einfacher geschrieben werden können ...

var rgx = /\d+[ms]/g; // capture 1 or more digits followed by m or s 
 
var str = `<100>11m 
 
[RIP]25s 
 
[RIP] 2m 
 
[RIP] 7m 
 
[RIP] 1m 
 
[RIP]12s`; 
 
var res; 
 

 
while(res=rgx.exec(str)){ 
 
    console.log(res[0]); 
 
}

Verwandte Themen