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 回答