我有一个字符串形式"Some lengthy string, Pattern1: string1, Pattern2: string2, Pattern3: string3"。我的目标是从这样的string1中提取string2string3String

请注意,StringsPattern1Pattern2Pattern3本身由多个字符组成。我知道解决方案,如果这些模式是单个字符。当前,我被迫对String.split()Pattern1Pattern2分别进行多个Pattern3调用。

有没有更优雅的方式做到这一点?还是没有转义多个split()调用?

编辑:我正在寻找或特定于Java的解决方案(因此Java是标题,但它已被删除)。随便这是我尝试过的方法,似乎对我有用。

String someString = "Some lengthy string Pattern1: string1 Pattern2: string2 Pattern3: string3";
String [] str = someString.split("Pattern1:|Pattern2:|Pattern3:");
System.out.println(str[1]);
System.out.println(str[2]);
System.out.println(str[3]);


这个的输出是

string1
string2
string3


有任何明显的问题吗?

最佳答案

要获得目标阵列,您首先必须去除前导部分,然后拆分其他模式:

String targets = input.replaceAll("^.*?Pattern1: ", "").split(", (Pattern2|Pattern3): ");

10-08 01:30