2017-12-29 12 views
0

Ich muss jede Datei suchen, die einen einzelnen Zeichen-Dateinamen mit einer 1-3-Zeichen-Erweiterung enthält.Regex, um einzelne Zeichen Dateinamen mit einer Erweiterung

Ich habe einige Zeit damit verbracht zu suchen, wie dies zu tun ist, aber ich kann nicht sehen, die richtige Kombination von Regex zu finden. Ich verwende eine Lösung, die Boost-Regex benötigt, was meiner Meinung nach Perl Regex ähnelt.

Hier sind einige Beispiele entsprechen sollte:

1.exe 
a.c 
-.zip (a hyphen is ok for the first part of the filename) 

Diese Beispiele nicht passen sollten:

1 (doesn't have an extension) 
1a.exe (has 2+ chars before the period) 

Beispiele Ich habe versucht:

^[.]+\.[a-z0-9]{1,3}$ 
^[a-z0-9]+\.[a-z0-9]{1,3}$ 
^[\w]\.[\w]{1,3}$ 
^([0-9a-z]{1})\..{1,3} 

Sie Vielen Dank für jede Hilfe kann liefern!

Antwort

0

Man könnte es wie folgt tun:

^[\w\-]\.\w{1,3}$

Erklärung

  • Von Anfang des Strings ^
  • Spiel ein Wortzeichen oder einen Bindestrich ^[\w\-]
  • Passe einen Punktan
  • ein Wortzeichen zwischen einem und drei Mal passt
  • Das Ende der Schnur $

oder mehr eingeschränkt statt der \w:

^[a-zA-Z\d\-]\.[a-zA-Z]{1,3}$

+0

Ich denke, die eingeschränkteren ein ist eigentlich der Gute. '\ w' stimmt mit jedem Wortzeichen überein, das gleich' [a-zA-Z0-9_] 'ist, so dass ein Unterstrich als Dateiname und/oder in der Erweiterung zulässig wäre. – louisfischer

Verwandte Themen