0

次のような文字列があります。

String text = "This is awesome
               Wait what?
               [[Foo:f1 ]]
               [[Foo:f2]]
               [[Foo:f3]]
               Some texty text
               [[Foo:f4]]

今、私は関数を書こうとしています:

public String[] getFields(String text, String field){
// do somethng
 }

enter code hereこのテキストを field = "Foo" で渡すと、[f1,f2,f3,f4] を返す必要があります

これをきれいにするにはどうすればよいですか?

4

1 に答える 1

4

次のパターンを使用します。

Pattern.compile("\\[\\[" + field + ":\\s*([\\w\\s]+?)\\s*\\]\\]");

最初のキャプチャ グループの値を取得します。


String text = "This is awesome Wait what? [[Foo:f1]] [[Foo:f2]]"
        + " [[Foo:f3]] Some texty text [[Foo:f4]]";

String field = "Foo";

Matcher m = Pattern.compile(
        "\\[\\[" + field + ":\\s*([\\w\\s]+?)\\s*\\]\\]").matcher(text);

while (m.find())
    System.out.println(m.group(1));
f1
f2
f3
f4

すべての一致を a に入れ、List<String>それを配列に変換できます。

于 2013-08-09T23:06:12.277 に答える