2015-10-17 5 views
0

Я работаю над классом, для которого его целью является просмотр строки (строки) текста и поиск всех строк или подстрок, для которых содержатся определенные специфические символы, в этом случае символы «ABC123».Matcher Class Java - сопоставление нескольких подстрок в одной строке

Текущий код, который я написал частично, работает, но только находит первую подстроку в строке текста ... другими словами, если строка текста, на которую она смотрит, содержит несколько подстрок, которые содержат «ABC123», он только находит и возвращает первую подстроку.

Как я могу изменить код, чтобы найти ВСЕ подстроки в строке текста?

Ниже мой текущий код:

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$34 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); 
     } 
    } 
} 

Как вы можете видеть, этот код возвращает следующее:

APLU4975723434 
APLU4975723434 
Not found: Viuhaskfdksjfkds APLIC4975723434 fkdsjkfjaksjfklsdakldjsen 
APLU49 

и не находит (что я хочу, чтобы это !!) текст " ABC123xyxyxyxyxyxyxyxyxyx "в первой строке.

Благодарим за помощь!

ответ

0

Используйте петлю внутри блока if для покрытия любых других экземпляров тестовой строки.

if (m.find()) { 
    System.out.print(m.group() + " "); 
    while (m.find()) { 
     System.out.print(m.group() + " "); 
    } 
} else { 
    System.out.println("Not found: " + text); 
} 
Смежные вопросы