0

帮助将不胜感激,我有一个字符串,例如:APP_RUNTIME_ERB3242322_1_P3A97.tar.gz

我想解析它并得到以下信息:P3A97

该字符串会及时更改,但基本上我需要在 .tar.gz 部分之前的最后五个字母数字字母,只要我得到这个字符串数据。

我可以使用 java 字符串拆分方法,但我不知道我可以使用什么正则表达式来获取最后 5 个字符。

4

4 回答 4

4

你可以使用lastIndexOf

str.substring(str.lastIndexOf("_") + 1, str.lastIndexOf(".tar.gz"))
于 2013-10-16T20:01:17.420 回答
1

您最初可以根据“_”进行拆分,然后获取它给您的最后一个令牌。然后你可以在“。”上拆分。并拿走它给你的第一个令牌。这当然取决于格式是否总是每次拆分具有相同数量的令牌。

证明:

APP_RUNTIME_ERB3242322_1_P3A97.tar.gz进入 APP

RUNTIME

ERB3242322

1

P3A97.tar.gz

然后P3A97.tar.gz分成P3A97 targz

于 2013-10-16T19:59:37.603 回答
1
...
String str = "APP_RUNTIME_ERB3242322_1_P3A97.tar.gz";
String lastChars = str.substring(str.length() - 12).replace(".tar.gz", "");

System.out.print(lastChars);

P3A97
于 2013-10-16T20:03:56.197 回答
0

每当我得到这个字符串数据时,我都需要 .tar.gz 部分之前的最后五个字母数字字母。

我可以使用 java 字符串拆分方法,但我不知道我可以使用什么正则表达式来获取最后 5 个字符

您在这里不需要正则表达式。除了您提到的内容之外,如果.tar.gz可以假设它位于字符串的末尾,那么您正在寻找一个substring

starting at (length of the string) - length(.tar.gz) - 5
ending at above index + 5
于 2013-10-16T20:08:53.447 回答