希望只匹配没有数字的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)
);
}
}