我应该编写一个代码来读取状态和邮政编码列表,找到具有### - ###格式的邮政编码的代码然后打印到.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.");
}
}
}
答案 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位数
$ =字符串的结尾。