2017-04-03 28 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

に書き直す必要があります。 1つの質問、あなたの例では、私はどのように友人を見せて、 ""なしで入力できますか? – Ayhem

+0

@Ayhem最も簡単な方法は、 '.replace(" \ ""、 "") 'のように引用をスクラブするだけです。 –

0

あなたはより多くの文字を検索したい場合は、あなたの正規表現は、実際に...「と」の間に1つの文字を検索するためです、正規表現を"\".?\""

関連する問題