public class ScannerDemo {
   public static void main(String[] args) {

      String s = "Hello World! 3 + 3.0 = 6 ";

      // create a new scanner with the specified String Object
      Scanner scanner = new Scanner(s);

      // check if next token is "Hello"
      System.out.println("" + scanner.hasNext("Hello"));

      // find the last match and print it
      System.out.println("" + scanner.match());

      // print the line
      System.out.println("" + scanner.nextLine());

      // close the scanner
      scanner.close();
   }
}

        

public class GFG1 { 
    public static void main(String[] argv) 
        throws Exception 
    { 
  
        String s = "GFG Geeks!"; 
  
        // create a new scanner 
        // with the specified String Object 
        Scanner scanner = new Scanner(s); 
  
        // check if next token is "GFG" 
        System.out.println("" + scanner.hasNext("GFG")); 
  
        // find the last match and print it 
        System.out.println("" + scanner.match()); 
  
        // print the line 
        System.out.println("" + scanner.nextLine()); 
  
        // close the scanner 
        scanner.close(); 
    } 
} 

        

public class ScannerMatchDemo {

	public static void main(String[] args) {

		// Initialize Scanner object
		Scanner scan = new Scanner("A E 4 1 3");
		// Printing the delimiter used
		System.out.println("Delimiter:"+scan.delimiter());
		scan.useRadix(16);
		// Print the radix the Scanner object is using
		System.out.println("Radix:"+scan.radix());
		// Printing the tokenized Strings
		while(scan.hasNextInt()){
			scan.nextInt();
			// printing the index where the delimiter has been found
			System.out.println("Pattern match at index:"+scan.match().start());
		}

		// closing the scanner stream
		scan.close();

	}

}

        

public class Main {

   public static void main(String[] args) {

      String s = "java2s.com 1 + 1 = 2.0 ";

      Scanner scanner = new Scanner(s);

      // check if next token is "java"
      System.out.println(scanner.hasNext("java"));

      // find the last match and print it
      System.out.println(scanner.match());

      System.out.println(scanner.nextLine());

      scanner.close();
   }
}

        

public static void main(String[] args) {
      Scanner scanner = new Scanner(threatData);
      String pattern = "(\\d+[.]\\d+[.]\\d+[.]\\d+)@" +
        "(\\d{2}/\\d{2}/\\d{4})";
  	      while(scanner.hasNext(pattern)) {
        scanner.next(pattern);
        MatchResult match = scanner.match();
        String ip = match.group(1);
        String date = match.group(2);
        System.out.format("Threat on %s from %s\n", date,ip);
     }

        

private int parseYear(Scanner s, int defaultYear) {
    if (s.hasNext(YEAR)) {
        s.next(YEAR);
        MatchResult mr = s.match();
        if (mr.group(1) != null) {
            return 1900;  // systemv has min
        } else if (mr.group(2) != null) {
            return YEAR_MAX_VALUE;
        } else if (mr.group(3) != null) {
            return defaultYear;
        }
        return Integer.parseInt(mr.group(4));
        /*
        if (mr.group("min") != null) {
            //return YEAR_MIN_VALUE;
            return 1900;  // systemv has min
        } else if (mr.group("max") != null) {
            return YEAR_MAX_VALUE;
        } else if (mr.group("only") != null) {
            return defaultYear;
        }
        return Integer.parseInt(mr.group("year"));
        */
    }
    throw new IllegalArgumentException("Unknown year: " + s.next());
}

        

protected ThreadStack parseThreadInfo(String threadInfo) {
    Scanner s = new Scanner(threadInfo);
    ThreadStack result = new ThreadStack();

    // parsing thread info
    s.findInLine(threadInfoPattern());
    MatchResult res = s.match();

    result.setThreadName(res.group(1));

    result.setType(res.group(3));

    result.setPriority(res.group(4));
    result.setTid(res.group(7));
    result.setNid(res.group(8));
    result.setStatus(res.group(9));

    s.close();
    return result;
}

        

protected MethodInfo parseMethodInfo(String line) {

	MethodInfo result = new MethodInfo();
	Scanner s = new Scanner(line);

	s.findInLine(methodInfoPattern());
	MatchResult rexp = s.match();
	if (rexp.group(4) != null && rexp.group(4).length() > 0) {
		// line "  at tmtools.jstack.share.utils.Utils.sleep(Utils.java:29)"
		result.setName(rexp.group(1));
		result.setCompilationUnit(rexp.group(2));
		result.setLine(rexp.group(4));

	} else {
		// line "  at java.lang.Thread.sleep(Native Method)"
		result.setName(rexp.group(1));
	}

	s.close();
	return result;
}

        

private void setWinCeVersion(OperatingSystem model) {
    //TODO: to be refined
    String osV = model.getVersion();
    if (osV == null) {
        return;

    } else if (!model.getMajorRevision().equals("1")) {
        return;
    }

    if (osV.matches(".*(\\d+).(\\d+).(\\d+).(\\d+).*")) {
        Scanner s = new Scanner(osV);
        s.findInLine(".*(\\d+).(\\d+).(\\d+).(\\d+).*");
        MatchResult result = s.match();
        if (result.group(1).equals("4")) {
            model.setMajorRevision("5");

        } else if (result.group(1).equals("6")) {
            model.setMajorRevision("6");

            if (result.group(3).equals("7")) {
                model.setMinorRevision("1");
            }
        }
    }
}

        

public static void setProxy(String proxyAddr)
{
	if(proxyAddr != null)
	{
		Scanner s = new Scanner(proxyAddr);
		
		// Split into "proxyAddr:proxyPort".
		proxyAddr = null;
		int proxyPort = 8080;
		try
		{
			s.findInLine("(http://|)([^:/]+)(:|)([0-9]*)(/|)");
			MatchResult m = s.match();
			
			if(m.groupCount() >= 2)
				proxyAddr = m.group(2);
			
			if(m.groupCount() >= 4 && !(m.group(4).length() == 0))
				proxyPort = Integer.parseInt(m.group(4));
		}finally
		{
			s.close();
		}
		
		if(proxyAddr != null)
		{
			SocketAddress sa = new InetSocketAddress(proxyAddr, proxyPort);
			setProxy(new Proxy(Type.HTTP, sa));
		}
	}
}        
main