我有一个像下面这样的字符串:
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
}
如果我使用field =" Foo" 传递此文本, enter code here
应返回[f1,f2,f3,f4]
我如何干净利落地做到这一点?
答案 0 :(得分: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
您可以将所有匹配项放在List<String>
中并将其转换为数组。