如何在Java程序中使用RegExp?

如何在Java程序中使用RegExp?,java,regex,Java,Regex,我有以下字符串示例: 00001 1 12 123 00002 3 7 321 00003 99 23 332 00004 192 50 912 在一个单独的文本文件中数字由制表符而不是空格分隔。 我试图读取文件并打印每一行,如果它与给定的RegExp匹配,但是我找不到适合这些行的RegExp private static void readFile() { String fileName = "processes.lst"; FileReader file = n

我有以下字符串示例:

00001 1 12 123
00002 3 7 321
00003 99 23 332
00004 192 50 912
在一个单独的文本文件中数字由制表符而不是空格分隔。

我试图读取文件并打印每一行,如果它与给定的RegExp匹配,但是我找不到适合这些行的RegExp

private static void readFile() {
    String      fileName = "processes.lst";
    FileReader  file = null;
    String      result = "";


    try {
        file = new FileReader(fileName);
        BufferedReader reader = new BufferedReader(file);

        String line = null;
        String regEx = "[0-9]\t[0-9]\t[0-9]\t[0-9]";
        while((line = reader.readLine()) != null)  {
            if(line.matches(regEx)) {
                result += "\n" + line;
            }
        }
    } catch(Exception e) {
        System.out.println(e.getMessage());
    } finally {
        if(file != null)
            try {
                file.close();
            } catch(Exception e) {
                System.out.println(e.getMessage());
            }
    }

    System.out.println(result);
}

我最终没有打印任何字符串

问题在于
[0-9]
只匹配一个数字,但您的输入通常在制表符之间有多个数字。您需要使用
[0-9]+
来匹配每个数字。(
+
表示前面的一个或多个重复…)


但更简单的解决方案是使用
String.split(…)
。。。阅读javadoc。

问题在于
[0-9]
只匹配一个数字,但您的输入通常在制表符之间有多个数字。您需要使用
[0-9]+
来匹配每个数字。(
+
表示前面的一个或多个重复…)

但更简单的解决方案是使用
String.split(…)
。。。阅读javadoc。

使用这个
String regEx=“[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+”

  • 至少1个字符及以上
  • 至少0个字符及以上
{2,3}对于最少2个字符和最多3个字符,请使用此
String regEx=“[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+”

  • 至少1个字符及以上
  • 至少0个字符及以上

{2,3}对于最少2个字符和最多3个字符的问题,欢迎来到程序员SE,这是白板问题问答网站,而不是实际的编程问题。请参阅,了解本网站的概述。您好,欢迎来到程序员SE,这是一个白板问题问答网站,而不是实际的编程问题。有关此网站的概述,请参阅。如果某些数字前面有(-)号,该如何包含这些数字?然后需要更改正则表达式以匹配前面的可选减号。(Duh!)。但我不会告诉你怎么做。或者阅读关于正则表达式的教程。。。或者按照我答案最后一句的建议去做!提示:这不是一个让其他人为你编程的地方。如果一些数字前面有(-)号,怎么能包含这些数字?然后你需要更改正则表达式以匹配前面可选的减号。(Duh!)。但我不会告诉你怎么做。或者阅读关于正则表达式的教程。。。或者按照我答案最后一句的建议去做!提示:所以这不是一个让别人为你编程的地方。