Matcher Class Java - 在同一行匹配多个子字符串
Matcher Class Java - Matching Multiple Sub-strings on Same Line
我正在研究一个 class,其目的是查看一行(字符串)文本,并查找包含某些特定字符的所有字符串或子字符串,在这种情况下字符 "ABC123".
我编写的当前代码部分有效,但只能找到一行文本中的第一个子字符串...换句话说,如果它正在查看的文本行包含多个子字符串包含 "ABC123",它只找到和 returns 第一个子字符串。
我如何修改代码以使其找到文本行中的所有子字符串?
下面是我当前的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//For grabbing the Sub-string and separating it with white space
public class GrabBLSubString {
public static void main(String[] args) {
test("Viuhaskfdksjfkds ABC1234975723434 fkdsjkfjaksjfklsdakldjsen ABC123xyxyxyxyxyxyxyxyxyx");
test("ABC1234975723434");
test("Viuhaskfdksjfkds APLIC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("abc ABC12349-75(723)4 xyz");
}
private static void test(String text) {
Matcher m = Pattern.compile("\bABC123.*?\b").matcher(text);//"\bABC123.*?\b"____Word boundary // (?<=^|\s)ABC123\S*__For White spaces
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("Not found: " + text);
}
}
}
如您所见,这段代码returns如下:
APLU4975723434
APLU4975723434
Not found: Viuhaskfdksjfkds APLIC4975723434 fkdsjkfjaksjfklsdakldjsen
APLU49
并且没有在第一行找到(我想要的!!)文本 "ABC123xyxyxyxyxyxyxyxyxyx"。
感谢您的帮助!
在 if
块中使用循环来覆盖测试字符串的任何其他实例。
if (m.find()) {
System.out.print(m.group() + " ");
while (m.find()) {
System.out.print(m.group() + " ");
}
} else {
System.out.println("Not found: " + text);
}
我正在研究一个 class,其目的是查看一行(字符串)文本,并查找包含某些特定字符的所有字符串或子字符串,在这种情况下字符 "ABC123".
我编写的当前代码部分有效,但只能找到一行文本中的第一个子字符串...换句话说,如果它正在查看的文本行包含多个子字符串包含 "ABC123",它只找到和 returns 第一个子字符串。
我如何修改代码以使其找到文本行中的所有子字符串?
下面是我当前的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//For grabbing the Sub-string and separating it with white space
public class GrabBLSubString {
public static void main(String[] args) {
test("Viuhaskfdksjfkds ABC1234975723434 fkdsjkfjaksjfklsdakldjsen ABC123xyxyxyxyxyxyxyxyxyx");
test("ABC1234975723434");
test("Viuhaskfdksjfkds APLIC4975723434 fkdsjkfjaksjfklsdakldjsen");
test("abc ABC12349-75(723)4 xyz");
}
private static void test(String text) {
Matcher m = Pattern.compile("\bABC123.*?\b").matcher(text);//"\bABC123.*?\b"____Word boundary // (?<=^|\s)ABC123\S*__For White spaces
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("Not found: " + text);
}
}
}
如您所见,这段代码returns如下:
APLU4975723434
APLU4975723434
Not found: Viuhaskfdksjfkds APLIC4975723434 fkdsjkfjaksjfklsdakldjsen
APLU49
并且没有在第一行找到(我想要的!!)文本 "ABC123xyxyxyxyxyxyxyxyxyx"。
感谢您的帮助!
在 if
块中使用循环来覆盖测试字符串的任何其他实例。
if (m.find()) {
System.out.print(m.group() + " ");
while (m.find()) {
System.out.print(m.group() + " ");
}
} else {
System.out.println("Not found: " + text);
}