2016-04-12 26 views
0

Java Regex ile ilgili yardıma ihtiyacım var.Java Regex iki dizi için geçerlidir

numaralı yyyymmdd.text_1.xml

VEYA

yyyymmdd.text_1.xml

: aşağıda biçimlerden birini sahip olabilir hangi bir dosya adı dizesi

< numarası> ve < yyyymmdd> 'i aşağıdaki regex kullanarak ilk formattan alabilirim:

"\\-(.*?)\\." - Beni

"(.*?)\\-"; yyyyaagg verir - Bana

Ama 2 formatı ile numarayı

verir (yani < yyyymmdd> .text_1.xml ile hata atar ve < yyyymmdd> değerini döndürmez. Her iki dizeyle çalışacak tarih formatı için bir düzenli ifadeye ihtiyacım var.

Yardım edebilir misiniz?

cevap

2

Bu regex P/biçimi-1 için numarasını ve tarihini hem de verir ve biçimi-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)); 
    } 
} 

Ç için boş bir dize ve tarih verir:

number 
20150606 
      // Empty String here. 
20150606 
+0

teşekkür ederiz !! Bu çok yardımcı oldu. – user6042886