2016-01-21 103 views
1

我正在尝试使用正则表达式的java教程,它有一个测试工具。我复制了代码并试图运行它。使用测试工具时的Java控制台错误消息

import java.io.Console; 
import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class RegexTestHarness { 
    public static void main(String[] args) { 
     Console console = System.console(); 

     if (console == null) { 
      System.err.println("No console."); 
      System.exit(1); 
     } 

     while (true) { 
      Pattern pattern = Pattern.compile(console.readLine("%nEnter your regex: ")); 
      Matcher matcher = pattern.matcher(console.readLine("Enter input string to search: ")); 
      boolean found = false; 

      while (matcher.find()) { 
       console.format("I found the text" + 
       " \"%s\" starting at " + 
       "index %d and ending at index %d.%n", 
       matcher.group(), 
       matcher.start(), 
       matcher.end()); 
       found = true; 
      } 

      if (!found) { 
       console.format("No match found.%n"); 
      } 
     } 
    } 
} 

我收到以下错误消息,我的控制台上

拿起JAVA_TOOL_OPTIONS:-javaagent:/usr/share/java/jayatanaag.jar 没有控制台。

它导入“控制台”并在控制台上显示错误。所以我不确定它为什么不创建控制台。

的页面,可以发现在:JAVA test Harness

+0

你在eclipse下运行你的应用程序吗?如果这样使用java.util.Scanner是因为System.console()返回null(eclipse bug:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 122429) – hasnae

+0

它在eclipse中 – user3137110

回答

0

在这里,你可以选择使用适合一个Java compilator (日食对我来说)扫描仪代码:

import java.util.regex.Pattern; 
import java.util.Scanner; 
import java.util.regex.Matcher; 

/* 
* Test for regular expressions - Test Harness 
* List of commands and more info: 
* https://docs.oracle.com/javase/tutorial/essential/regex/test_harness.html 
*/ 
public class RegexTestHarness { 

    public static void main(String[] args){ 

      Scanner in = new Scanner(System.in); 

      System.out.printf("%nEnter your regex: "); 
      Pattern pattern = 
      Pattern.compile(in.nextLine()); 

      System.out.printf("Enter input string to search: "); 
      Matcher matcher = 
      pattern.matcher(in.nextLine()); 

      boolean found = false; 
      while (matcher.find()) { 
       System.out.printf("I found the text" + 
        " \"%s\" starting at " + 
        "index %d and ending at index %d.%n", 
        matcher.group(), 
        matcher.start(), 
        matcher.end()); 
       found = true; 
      } 
      if(!found){ 
       System.out.printf("No match found.%n"); 
      } 
      in.close(); 
     } 

} 
0

您可以使用以下。它也有while循环,所以你可以毫不费力地练习你的regex。

package regex; 

import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexTestHarness { 

    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     while (true) { 
      System.out.printf("%nEnter your regex: "); 
      Pattern pattern = Pattern.compile(in.nextLine()); 

      System.out.printf("Enter input string to search: "); 
      Matcher matcher = pattern.matcher(in.nextLine()); 

      boolean found = false; 
      while (matcher.find()) { 
       System.out.printf("I found the text" + " \"%s\" starting at " + "index %d and ending at index %d.%n", 
         matcher.group(), matcher.start(), matcher.end()); 
       found = true; 
      } 
      if (!found) { 
       System.out.printf("No match found.%n"); 
      } 
      // in.close(); 
     } 
    } 
}