使用模式匹配在 Java 中查找没有数字的字符串数据



希望只匹配没有数字的String,使用regex中的D

每个字符串都显示为false,但为什么呢?

输出:

thufir@dur:~/NetBeansProjects/parseCSV$ 
thufir@dur:~/NetBeansProjects/parseCSV$ gradle run
> Task :run                                                                                     
Feb. 16, 2020 5:24:49 A.M. parseCSV.FileHelper processLines
INFO:           false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: z10               false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: y9                false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: x7                false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: atrib6            false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: alice             false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: home5             false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: cell4             false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: sue               false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: phone3            false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: phone2            false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: phone1            false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: joe               false
Feb. 16, 2020 5:24:50 A.M. parseCSV.FileHelper processLines
INFO: people            false
BUILD SUCCESSFUL in 1s
3 actionable tasks: 1 executed, 2 up-to-date
thufir@dur:~/NetBeansProjects/parseCSV$                          

类中的相关方法:

public void processLines() {
String regex = "\D";
boolean isDigit = false;
for (String s : lines) {
isDigit = Pattern.matches(regex, s);
log.info(s + "tt" + Boolean.toString(isDigit)
);
}

您应该使用正则表达式模式^D+$,它从头到尾匹配一个或多个连续的非数字字符。 由于Pattern#matches隐式覆盖了整个字符串,因此我们可以只使用D+

public void processLines() {
String regex = "\D+";
boolean isDigit = false;
for (String s : lines) {
isDigit = Pattern.matches(regex, s);
log.info(s + "tt" + Boolean.toString(isDigit)
);
}
}

最新更新