2016-07-26 4 views
1

Ich versuche, die folgenden Dateiformate zu entsprechen, um den Dateien eine absolute URL voran zu stellen. Die Zeichenfolgen sind Teil einer index.html Datei und ich verwende npm replace zum Suchen/Ersetzen. Hier sind die verschiedenen Dateinamen:Dateiregex in npm ersetzen

  • favicon.ico
  • main.somestringwithcharacterandletters.css
  • main.somestringwithcharacterandletters.js
  • somestringwithcharactersandletters.woff
  • somestringwithcharactersandletter.ttf

Ich habe den folgenden Regex ausprobiert:

Dies entspricht dem letzten Zeichen im Dateinamen und der Erweiterung anstelle des vollständigen Dateinamens und der Erweiterung Was muss geändert werden, um dem vollständigen Dateinamen zu entsprechen, damit ich einen absoluten Pfad voranstellen kann?

+1

Beachten Sie, dass '{1}' in Regex niemals nützlich ist. Ein Quantifizierer von 1 Vorkommen ist derselbe wie kein Quantifizierer – Aaron

+1

[Ein weiterer Satz von Klammern hinzufügen?] (Https://regex101.com/r/uY8dG5) –

+3

'(\ w) +' -> '(\ w +)'. Anstatt eine Gruppe zu quantifizieren, die den letzten übereinstimmenden Wert erfasst, sollten Sie das Muster innerhalb der Gruppe quantifizieren. –

Antwort

1

Entfernen Sie die redundante {1} und was noch wichtiger ist - die + in die zweite Capture-Gruppe verschieben:

(main\.)?(\w+)\.(css|js|woff2?|eot|ttf|png|ico) 
      ^        ^

die regex demo See.

enter image description here

Wenn Sie einen Quantifizierer auf eine Gruppe gesetzt, die ganze Gruppe Muster paßt wiederholt, aber die Inhalte des Gruppenstapels ständig mit jedem folgenden Spiel neu geschrieben. Überprüfe also immer, was du quantifizierst, in vielen Situationen willst du das Gruppenmuster quantifizieren, nicht die Gruppe selbst (es sei denn, es handelt sich um eine nicht erfassende Gruppe, wenn du nichts erfährst und wir nur eine Gruppe von Gruppen gruppieren) Untermuster).

Verwandte Themen