Java赋值 - 无法使匹配正则表达式正常工作

时间:2014-10-16 01:47:36

标签: java regex

我应该编写一个代码来读取状态和邮政编码列表,找到具有### - ###格式的邮政编码的代码然后打印到.txt文件。到目前为止,我正确地阅读/写作,但是当我尝试放入匹配的条件时。(" \\ d {3} - \\ d {3}")它没有写任何东西,就像条件不满足。我已经在网上搜索了几个小时,但我不知道什么是错的。例如,输入文件的每一行都写成:" KS Kansas 660-699"。

这是我到目前为止所做的:

public static void main(String[] args) {

    File file = new File("ziptable.txt");


    try{
        PrintWriter pw = new PrintWriter("output.txt");
        Scanner sc1 = new Scanner(file);

        while(sc1.hasNextLine()){

            String oneLine = sc1.nextLine();
            Scanner sc2 = new Scanner(oneLine);
            String oneWord = sc2.nextLine();
            if(oneWord.matches("\\d{3}-\\d{3}")){
                System.out.println(oneWord);
            }
        }

        pw.close();
        sc1.close();
    }catch(FileNotFoundException e){
        System.err.println("File not found.");
    }

}

}

2 个答案:

答案 0 :(得分:1)

matches()告诉整个字符串是否与给定的正则表达式匹配。如果输入行的格式为" KS Kansas 660-699",请将正则表达式更改为以下内容。

if (oneWord.matches(".*\\d{3}-\\d{3}")) { ...

答案 1 :(得分:0)

以下内容适合您的需求。我已经包含了“不可知”正则表达式的答案,以及特定于Java的正则表达式:

  

正常:^\d{3}[-]\d{3}$

     

Java String Regex:"^\\d{3}[-]\\d{3}$"

     

^ =字符串的开头。

     

\ d {3} =匹配3位数

     

[ - ] =匹配连字符

     

\ d {3} =匹配3位数

     

$ =字符串的结尾。