在 java 中提取已知模式的子串

Extracting a substring of a known pattern in java

我正在处理包含我要提取的子字符串的字符串。子字符串始终采用“USX”形式,其中 US 是字符串“US”,X 是任意长度的整数。

例如,考虑以下字符串:

对于以下字符串,我想提取粗体文本。

str1 = somerandomstuff 129 moreRand US2 $#@# o

str2 = US231 random!@@!

str3 = apples or@nges 12 US1294

我已经四处寻找这样做的方法,但没有成功。关于我如何解决这个问题有什么想法吗?

这类问题可以使用正则表达式(简称regex)

我喜欢的关于正则表达式的一个来源是https://www.regular-expressions.info/

如果你想要的所有字符串都像上面那样用空格分隔,你可以使用split()。

例如,

String[] strArray1 = str1.split(" ");
for (String item : strArray1) { // Cycle through all the pieces
    if (item.startsWith("US"))
         String target = item; // Your desired String
}

Split() 将一个字符串分解成一个数组,每个元素都是分隔符之间的任何元素,在这种情况下是空格。

您可以使用正则表达式实现它。使用正则表达式 (US\d+) 您将获得匹配 "US" 后跟任意长度整数(最小值为 1)

的组
import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

Matcher matcher = Pattern.compile("(US\d+)").matcher(str1);
if (matcher.find()) {// if it matched the pattern
    String result = matcher.group(0);// the group captured by the regex
}