我有一个字符串形式"Some lengthy string, Pattern1: string1, Pattern2: string2, Pattern3: string3"
。我的目标是从这样的string1
中提取string2
,string3
和String
。
请注意,Strings
,Pattern1
,Pattern2
和Pattern3
本身由多个字符组成。我知道解决方案,如果这些模式是单个字符。当前,我被迫对String.split()
,Pattern1
和Pattern2
分别进行多个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): ");