2016-04-10 20 views
1

, bu uzun bir dize hem /css/screen/shared/styles.css ve /css/screen/nol/styles.css grep istiyorum:Uzun bir dize içinde aynı biçimdeki alt dizeleri java düzenli ifadesiyle nasıl grepleyebilirim? Örneğin

@import "/css/screen/shared/styles.css"; 
@import "/css/screen/nol/styles.css"; 

Not bu uzun dize 2 satırları içerdiğini, bu java kodunda bu gibi görünmelidir:

String sentence = "@import \"/css/screen/nol/styles.css\";\[email protected] \"/css/screen/shared/styles.css\";"; 

Şimdiye kadar var:

"@import\\s\"(.*?)\";\n" 

sadece "/css/screen/shared/styles.css" tanımlar, ancak hiçbir/"/ css/ekranı yok sayar l/styles.css". İşte

benim kodudur:

public static String getImportCSS(String sentence){ 
     String result = ""; 
     if(sentence.length() == 0) return null; 
     if(sentence.indexOf("@import ") != -1){ 
      Pattern regex = Pattern.compile("@import\\s\"(.*)\";"); 
      Matcher regexMatcher = regex.matcher(sentence); 
      if(regexMatcher.find()){ 
       for(int i = 0; i <= regexMatcher.groupCount(); i++){ 
        result = regexMatcher.group(1); 
       } 
      } 
      return result; 
     } 
     return null; 
    } 

yanlış burada ne yapıyorum? Teşekkürler!

+0

aynı biçimidir? –

+0

Her satır için şunlar bulunur: @import "xxxx/xxxx/xxxx"; ve sadece xxxx/xxxx/xxxx'e ihtiyacım var. –

+0

Lütfen daha fazla bilgi için sorunuz. –

cevap

0

İntikamınızın sonunda bir LF (\n) bulunduğundan ikinci dizeyle eşleştiremezsiniz.

Bunu kaldırın ve desen hem dizeleri bulacaktır.

@import\s*\"([^"]*)\"; 

bakınız: dizeleri bir çift tırnak içermemelidir Ancak, ben bir negatif karakter sınıfı [^"]* (a " dışındaki sıfır veya daha fazla karakter) yerine tembel nokta uyumunu kullanmak öneriyorum regex demo

Java demo: Hangi anlamda

String str = "@import \"/css/screen/shared/styles.css\";\[email protected] \"/css/screen/nol/styles.css\";"; 
Pattern ptrn = Pattern.compile("@import\\s*\"([^\"]*)\";"); 
Matcher matcher = ptrn.matcher(str); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 
+0

Teşekkürler! Bu harika. –

İlgili konular