java - Java中使用模式匹配查找不包含数字的字符串数据

标签 java regex string syntax boolean

期待matchString 带有 no数字,使用 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$                          

相关方法from类:

public void processLines() {
    String regex = "\\D";
    boolean isDigit = false;
    for (String s : lines) {
        isDigit = Pattern.matches(regex, s);
        log.info(s + "\t\t" + 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 + "\t\t" + Boolean.toString(isDigit)
        );
    }
}

关于java - Java中使用模式匹配查找不包含数字的字符串数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60248988/

相关文章:

java - 从我的文件导入后,我的 ListView 没有打印出我的数组列表

java - 元音的正则表达式负向前瞻

java - 在进行 Java 字符串比较时,~ (tilda) 的值是什么?

c - Gets(string#) 函数跳过先获取请求

java - 为什么在为 JPanel 使用键绑定(bind)时无法获取 KeyEvent.VK_TAB

java - 空对象引用上的 View.findViewById(int)'

特定数字的正则表达式,忽略其他数字

python - 如何验证字符串是否是有效的 float ?

java - 使用@Temporal(TemporalType.DATE)更新时间

java - 从 Guava CharMatcher 切换到 Regex