这是完成所有任务的一线工具:
List strings = Arrays.asList( input.replaceAll("^.*?pattern1", "")
.split("pattern2.*?(pattern1|$)"));
细分为:
删除模式1之前的所有内容(第一项必须不要以空字符串结尾)
.*?在pattern2和pattern1(或输入的结尾)之间的输入(非贪婪)上分割
使用实用程序方法Arrays.asList()生成List
这是一些测试代码:
public static void main( String[] args ) {
String input = "abcabc pattern1foopattern2 abcdefg pattern1barpattern2 morestuff";
List strings = Arrays.asList( input.replaceAll("^.*?pattern1", "").split("pattern2.*?(pattern1|$)"));
System.out.println( strings);
}
输出:
[foo, bar]