字符串在数字和符号后拆分

String split after a number and symbol

我有一个示例字符串,例如

"ZZZ-1234567890-from ABC-2 DEF"

我需要输出为:

"from ABC-2 DEF"

所有示例字符串的格式均为

"ZZZ-numbers-Strings"

我需要在

之后获取字符串部分

"ZZZ-numbers-"

我尝试使用split()但无法解决。感谢您的帮助!

更新

再次阅读您的问题后,知道您的String格式为

"ZZZ-numbers-Strings" 而你想要 "ZZZ-numbers-"

之后的一切

然后您可以使用 "ZZZ-\d+-" 的正则表达式模式进行拆分。这将生成一个 2 元素数组,您希望索引 1 处的结果。

public static void main(String[] args) throws Exception {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    String[] split = data.split("ZZZ-\d+-");
    System.out.println(split[0]); 
    System.out.println(split[1]); 
}

结果:

(blank line for split[0])
from ABC-2 DEF

旧答案

这看起来更像是 substring()indexOf() 的工作,只要 "from" 在您的 String 中只存在一次并且您想捕获 [= 之后的所有内容38=] 包括 "from".

public static void main(String[] args) throws Exception {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    System.out.println(data.substring(data.indexOf("from"))); 
}

结果:

来自 ABC-2 DEF

简单,使用String.split("ZZZ-\d+-")[1]

根据您的格式,您可能想要删除第一部分 "ZZZ-numbers-"

将 replaceAll 与正则表达式结合使用(受@Shar1er80 回答启发):

public static void main(String[] args) {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    System.out.println(data.replaceAll("^.{3}[-][0-9]+[-]","")); 
}