public TaggedValueIterator(final String aLine,final boolean attemptFirstWord,final String... tags){
  this.aLine=aLine;
  this.attemptFirstWord=attemptFirstWord;
  this.tags=tags;
  tagPos=0;
  nextResult=getNextResult();
  if (attemptFirstWord) {
    int a=0;
    while (a < aLine.length()) {
      if (aLine.charAt(a) == '>' || aLine.charAt(a) == '@' || Character.isWhitespace(aLine.charAt(a)))       a++;
 else       break;
    }
    int b=a + 1;
    while (b < aLine.length()) {
      if (Character.isLetterOrDigit(aLine.charAt(b)) || aLine.charAt(b) == '_')       b++;
 else       break;
    }
    if (b - a > 4) {
      nextResult=aLine.substring(a,b);
    }
    tagPos=b;
  }
}

public TaggedValueIterator ( final String aLine , final boolean attemptFirstWord , final String ... tags ) { this . aLine = aLine ; this . attemptFirstWord = attemptFirstWord ; this . tags = tags ; tagPos = 0 ; nextResult = getNextResult ( ) ; if ( attemptFirstWord ) { int a = 0 ; while ( a < aLine . length ( ) ) { if ( aLine . charAt ( a ) == '>' || aLine . charAt ( a ) == '@' || Character . isWhitespace ( aLine . charAt ( a ) ) ) a ++ ; else break ; } int b = a + 1 ; while ( b < aLine . length ( ) ) { if ( Character . isLetterOrDigit ( aLine . charAt ( b ) ) || aLine . charAt ( b ) == '_' ) b ++ ; else break ; } if ( b - a > 4 ) { nextResult = aLine . substring ( a , b ) ; } tagPos = b ; } }
iterator over all values following an occurrence of tag in aline . example : aline = gi | 4444 | gi | 5555 and tag = gi | with return 4444 and then 5555 value consists of letters , digits or underscore
