2017-04-03 112 views
1

我有一個字符串,我不知道它是多長時間或者使用了哪些字符。 我想在字符串中搜索並獲取在「」中找到的任何子字符串。 我試圖用pattern.compile但它總是返回一個空字符串從字符串中多次獲取子字符串

Pattern p = Pattern.compile("\".\""); 
Matcher m = p.matcher(mystring); 
while(m.find()){ 
    System.out.println(m.group().toString()); 
} 

我該怎麼辦呢?

回答

1

使用.+?進去""所有字符分組

Pattern p = Pattern.compile("\".+?\""); 

.+指定要報價內至少一個或多個字符。 ?指定它是一個不情願的量詞,這意味着它會將不同的引語放入不同的組中。

單元測試例如:

@Test 
public void test() { 
    String test = "speak \"friend\" and \"enter\""; 

    Pattern p = Pattern.compile("\".+?\""); 
    Matcher m = p.matcher(test); 
    while(m.find()){ 
    System.out.println(m.group().toString().replace("\"", "")); 
    } 
} 

輸出:

friend 
enter 
+0

非常感謝。 在你的例子中,有一個問題,我如何顯示朋友,並輸入沒有「」。 – Ayhem

+0

@Ayhem最簡單的方法就是擦掉引號,比如'.replace(「\」「,」「)' –

0

那是因爲你的正則表達式實際上是搜索之間的一個角色「和」 ...如果你想尋找更多的角色,你應該重寫你的正則表達式爲"\".?\""

相關問題