2017-10-20 6 views
1

Zunächst einmal bin ich nicht sehr gut im Umgang mit Regex, aber ich versuche, eine Regex zu bestimmten Zeichenfolge zu erstellen, ersetzen sie durch Überspringen ersten Zeichen der Matcher-Zeichenfolge mit positiven Blick voraus. Bitte beachten Sie unten ausführlichJavascrip RegEx positive Lookahead funktioniert nicht wie erwartet

Test-String asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka

RegEx (?=[^\w])df\.

Ersatz String kkk.

Erwartetes Ergebnis asdf.wakawaka asdf.waka kkk.waka [kkk.waka (kkk.waka _df.waka {df,waka

Aber regex oben dos fanden keine Übereinstimmung damit es nichts als ein Ergebnis ersetzt und geben Sie im Ergebnis eine ursprüngliche Testfolge ein.

Ohne positives Lookahead (erste Zeichenstrategie überspringen) entspricht es meiner Anforderung. siehe matching regex sample on regex101.com

Mit positiver Vorschau gibt unerwartete Ergebnisse regex with positive look aheah on regex101.com

Vielen Dank im Voraus für jede Hilfe.

+1

Wie [DIESE] (https://regex101.com/r/efjzQk/3)? – Gurman

+0

Richtig @Gurman, das ist genau das, was ich vermisst habe. –

Antwort

1

Die Verwendung von [^\w] bedeutet, dass Sie einen anderen Char als ein Wortzeichen suchen und konsumieren möchten, bevor Sie das Match ersetzen müssen.

Dieses Zeichen ist jedoch verbraucht und Sie können es nicht wiederherstellen, ohne es zuerst zu erfassen. Sie könnten Gurman Ansatz verwenden /(^|\W)df\./g anzupassen und ersetzen mit '$1kkk., aber Sie können auch eine Wortgrenze verwenden:

\bdf\. 

Siehe regex demo

JS Demo:

var s = "asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka"; 
 
console.log(
 
    s.replace(/\bdf\./g, 'kkk.') 
 
);

Wenn Sie jedoch nichtersetzen möchten 210 zu Beginn der Zeichenfolge verwendet

var s = "df. asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka"; 
 
console.log(
 
    s.replace(/(\W)df\./g, '$1kkk.') 
 
);

+1

Das erklärt, warum ich meine Regex nicht funktionieren lassen kann. Ich akzeptiere die Antwort, um das Problem zu lösen. –

Verwandte Themen