2017-11-13 2 views
0

Dies ist eine weitere Regex Frage. Ich konnte keine Stackoverflow-Frage finden, die meine Bedürfnisse ansprach.Regex: nicht Suffix mit Teilzeichenfolge

Ich benutze Java. Ich brauche eine Regex die folgenden Dateien entsprechen:

  • my_file
  • my_file.123 (grundsätzlich my_file\.(\d+))

aber ich will nicht entsprechen:

  • my_file_name
  • my_file_name.123

Ich schaute auf negative Lookaheads, aber das scheint nur zu funktionieren, wenn ich das absolute Suffix kenne. Ich denke, was ich will, ist ad my_file, die nicht _ als das unmittelbar folgende Zeichen hat.

Wie kann ich den obigen Regex ausdrücken? Danke fürs Lesen.

+1

'my_file (\ \ d +.)' – shmosel

+1

"Ich denke, was ich will, ist ...?" - na ja, bevor Sie mit der Programmierung Hilfe bekommen , müssen Sie _exactly_ entscheiden, was Sie wollen. –

Antwort

1

Sie müssen nur my_file (und optional Literal . gefolgt von Ziffern) übereinstimmen. Wie,

String[] arr = { "my_file", "my_file.123", "my_file_name", "my_file_name.123" }; 
String regex = "my_file(\\.\\d+)?"; 
for (String str : arr) { 
    System.out.printf("%s %s%n", str, str.matches(regex)); 
} 

Ausgänge (wie gewünscht)

my_file true 
my_file.123 true 
my_file_name false 
my_file_name.123 false 
Verwandte Themen