Regex dwa razy musze dane wczytac, dlaczego?

0

Witam!
Mam taki program gdzie porownuje dwa regexy, i taki motyw, ze musze wczytywac dwa razy dane, zeby sprawdzic czy zdanie o danym wzorze istnieje. Gupio to zrobilem ale nie chce dzialac z if.

ArrayList<String> listEll = new ArrayList<String>();

	try{
		Scanner in = new Scanner(new FileReader("data.dat"));
		 String reg = "^[A-Z]+[0-9]{1}( \\d{1,3}){4}( \\d{1,3}.\\d{6}( \\d{1,3}){4})$";
			while(in.hasNext()){					
			Pattern wzor = Pattern.compile(reg);
			Matcher zdanie = wzor.matcher(in.nextLine());
			if(zdanie.find()){				
				listEll.add(zdanie.group());
			}
	}
			in.close();

}
catch(IOException exception){
}
ArrayList<String> list = new ArrayList<String>();
{
try{
Scanner in = new Scanner(new FileReader("data.dat"));
String reg = "^[A-Z]+[0-9]{1}( [0-9]{1,3}){8}$";

				while(in.hasNext()){					
				Pattern wzor = Pattern.compile(reg);
				Matcher zdanie = wzor.matcher(in.nextLine());
				while(zdanie.find()){
					list.add(zdanie.group());
				}}
				in.close();		
	}
		catch(IOException exception){
		}

Masakra juz sam nie wiem gdzie to wrzucic. Jak to zrobic zeby tylko raz wyczytac linie z poliku i sprawdzic czy to moze regex1 czy regex 2.
Dzieki

0
lukasty napisał(a)

Regex dwa razy musze dane wczytac, dlaczego?

Nie musisz, ale z jakiegos powodu to robisz :P

Co stoi na przeszkodzie, zeby stworzyc sobie dwa rozne Matchery i w petli wczytujacej poszczegolne linie sprawdzac dwa warunki od razu?

Poza tym wyrazenie: "[A-Z]+[0-9]{1}( [0-9]{1,3}){8}$" interpretuje caly podany ciag znakow, od poczatku (</sup>) do konca ($), wiec Matcher.find() zwroci true co najwyzej raz, czyli petla while(zdanie.find()){ //... } nie ma tutaj za duzego pola do popisu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1