2016-09-22 2 views
1

Ich habe diese RegEx-Syntax: "- (= [a-z]?) (< = [a-z]?)"übersetzen RegEx-Syntax in PHP und Python zu JS arbeiten

Es fängt einen Bindestrich zwischen zwei Kleinbuchstaben. Im Beispiel unten ist der zweite Strich eingefangen:

Krynica-Zdrój, Ul. Uzdro-jowa

Leider kann ich < = in JS nicht verwenden. Mein Ziel ist es, den Bindestrich mit RegEx ersetzen zu entfernen.

+0

ich verwenden möchte ersetzen, um dieses Bindestrich loszuwerden. –

+0

Über/\ b- \ b/g gibt es beide Bindestriche zurück. Über das zweite Muster habe ich keine Ahnung, wie man es zum Laufen bringt, ohne Änderungen erkennt es nichts. –

+0

Ja, ich habe unten eine Lösung zur Verfügung gestellt. Lass mich meinen ersten Kommentar löschen. –

Antwort

1

Es scheint mir, Sie müssen den Bindestrich zwischen Kleinbuchstaben entfernen.

Verwenden

var s = "Krynica-Zdrój, ul. Uzdro-jowa"; 
 
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1"); 
 
console.log(res);

Notiere die erste Lookbehind in eine einfache Erfassungsgruppe gedreht und die zweite Look-Ahead ist in Ordnung, da zu verwenden - möglicherweise, wenn es Stücke von Bindestrichen einzelnen Kleinbuchstaben - Es wird in der Lage sein, überlappende Übereinstimmungen zu behandeln.

Einzelheiten:

  • ([a-z]) - Gruppe 1 Erfassung ein Klein ASCII Buchstaben
  • - - ein Bindestrich
  • (?=[a-z]) - das mit einem Klein ASCII Buchstaben gefolgt wird, die nicht zu dem Ergebnis hinzugefügt wird - /g - ein globaler Modifikator, Suche nach allen Vorkommen des Musters
  • "$1" - das Ersetzungsmuster, das nur die Rückreferenz zu dem in Gruppe-1-Puffer gespeicherten Wert enthält.

VBA Beispielcode:

Sub RemoveExtraHyphens() 
Dim s As String 
Dim reg As New regexp 

reg.pattern = "([a-z])-(?=[a-z])" 
reg.Global = True 

s = "Krynica-Zdroj, ul. Uzdro-jowa" 
Debug.Print reg.Replace(s, "$1") 
End Sub 

enter image description here

+0

Ich habe versucht/([a-z]) - (? = [A-z])/g und es gibt "o-" in meinem Beispiel zurück. –

+0

Wo ist * dein * Beispiel? Bitte teilen. Wenn Sie * meins * verwenden, werden Sie sehen, dass es gut funktioniert. –

+0

Mein Beispiel ist Krynica-Zdrój, Ul. Uzdro-jowa, ich habe überprüft/([az]) - (? = [Az])/g auf https://regex101.com/#javascript, ich verstehe vielleicht auch etwas nicht, also werde ich das erklären Ich brauche das Muster in VBA verwendet werden, die JS RegEx-Syntax verwendet. –