2016-04-12 13 views
0

Ich brauche Hilfe mit einem Java Regex. Ich habe einen Dateinamen Zeichenfolge, die eine der folgenden Formate haben:Java Regex anwendbar für zwei Strings

Zahlen yyyymmdd.text_1.xml

ODER

yyyymmdd.text_1.xml

Ich bin in der Lage, die < Nummer> und < JJJJMMTT> aus dem ersten Format mit unter Regex:

"\\-(.*?)\\." - gibt mir

"(.*?)\\-"; yyyymmdd - gibt mir Zahl

Aber mit zweiten Format (d mit < yyyymmdd> .text_1.xml) es wirft Fehler und gibt < yyyymmdd> nicht zurück. Ich brauche eine Regex für das Datumsformat, das mit beiden Strings arbeitet.

Könnten Sie bitte helfen?

Antwort

2

Diese Regex gibt sowohl Nummer und das Datum für die Format-1 und gibt leere Zeichenfolge und das Datum für Format-2

public static void main(String[] args) { 
    String s1 = "number-20150606.text_1.xml"; 
    String s2 = "20150606.text_1.xml"; 

    Pattern p =Pattern.compile("(.*?)-?(\\d{8})"); 
    Matcher m = p.matcher(s1); 
    while(m.find()) { 

     System.out.println(m.group(1)); 
     System.out.println(m.group(2)); 
    } 
    m = p.matcher(s2); 
    while(m.find()) { 

     System.out.println(m.group(1)); 
     System.out.println(m.group(2)); 
    } 
} 

O/P:

number 
20150606 
      // Empty String here. 
20150606 
+0

Thank you !! Das war sehr hilfreich. – user6042886

Verwandte Themen