在 java 中提取已知模式的子串
Extracting a substring of a known pattern in java
我正在处理包含我要提取的子字符串的字符串。子字符串始终采用“USX”形式,其中 US 是字符串“US”,X 是任意长度的整数。
例如,考虑以下字符串:
- “US21”
- “US9432”
- “US121390”
- “US7”
对于以下字符串,我想提取粗体文本。
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
}
我正在处理包含我要提取的子字符串的字符串。子字符串始终采用“USX”形式,其中 US 是字符串“US”,X 是任意长度的整数。
例如,考虑以下字符串:
- “US21”
- “US9432”
- “US121390”
- “US7”
对于以下字符串,我想提取粗体文本。
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
}