为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Java中找到第一个字符的反向拆分字符串?

如何从Java中找到第一个字符的反向拆分字符串?

四季花海 2022-07-14 16:28:47
我有一个像 MH12PE1433 这样的字符串我正在尝试找到一个正则表达式来将它从我得到第一个字符的末尾拆分出来,例如。String str1=1433;String str2=MH12PE;我可以通过使用拆分最后 4 位数字String no=MH12PE1433;if (no.length() > 3) {                        text2 = no.substring(no.length() - 4);}但想在找到第一个字母的地方使用正则表达式进行拆分。我希望你能理解我的问题谢谢
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

你可以使用这个正则表达式来分割你想要的方式,


(?<=[A-Z])(?=\d+$)

这里(?<=[A-Z])正向后视标记第一个字母表(?=\d+$)的开始,并将连续数字的开始标记到字符串的结尾,从而为您提供您正在寻找的字符串内的点。只需拆分该点即可为您提供所需的输出。


Java代码,


String s = "MH12PE1433";

System.out.println(Arrays.toString(s.split("(?<=[A-Z])(?=\\d+$)")));

印刷,


[MH12PE, 1433]

你也可以在这里玩演示


此外,如果您有任何非字母字符串,而不仅仅是字符串末尾的数字,您可以更普遍地使用此正则表达式,它将您的文本与最后一个字母表分开(正如您所说的字符串末尾的第一个字母表)。


(?<=[A-Za-z])(?=[^A-Za-z]*$)

Java代码,


List<String> list = Arrays.asList("MH12PE1433","MH12PE@@1123", "MH12PE@@##$$", "MH12Pe5555");

list.forEach(x -> System.out.println(x + " --> " + Arrays.toString(x.split("(?<=[A-Za-z])(?=[^A-Za-z]*$)"))));

印刷,


MH12PE1433 --> [MH12PE, 1433]

MH12PE@@1123 --> [MH12PE, @@1123]

MH12PE@@##$$ --> [MH12PE, @@##$$]

MH12Pe5555 --> [MH12Pe, 5555]


查看完整回答
反对 回复 2022-07-14
?
阿晨1998

TA贡献2037条经验 获得超6个赞

您可以尝试以下操作:使用以下代码从末尾替换所有数字以获取较早的字符串。湾。将派生的字符串从原始字符串替换为最后的数字。


String no="MH12PE1433";

    String regex="[0-9]+$";//all ending digits

    String prefix = no.replaceFirst(regex, "");//MH12PE

    String suffix = no.replaceFirst(prefix, "");//1433


查看完整回答
反对 回复 2022-07-14
?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以通过在正则表达式[0-9]+末尾添加 a 来使用匹配字符串末尾数字$的正则表达式。


private static final Pattern pattern = Pattern.compile("([0-9]+)$");


private String extractTrailingDigits(String s) {

    Matcher matcher = pattern.matcher(s);

    if (matcher.find()) {

        return matcher.group(1);

    } else {

        return "";

    }

}


private void test() {

    String[] tests = {"MH12PE1433", "MH12PE1433000"};

    for (String test : tests) {

        System.out.println(test + " -> " + extractTrailingDigits(test));

    }

}


查看完整回答
反对 回复 2022-07-14
  • 3 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信