java - 如何在Java中扫描不包括标点符号的单词

标签 java parsing

我正在尝试使用扫描仪类来解析文件中的所有单词。该文件包含常见文本,但我只想获取不包括所有标点符号的单词。 到目前为止我的解决方案还不完整,但已经给我带来了一些问题:

Scanner fileScan= new Scanner(file);
String word;
while(fileScan.hasNext("[^ ,!?.]+")){       
    word= fileScan.next();
    this.addToIndex(word, filename);
}

现在,如果我在“嗨,我的名字是马里奥!”这样的句子中使用它它只返回“hi”、“my”、“name”和“is”。它与“mario!”不匹配(显然)但它与“mario”不匹配,就像我认为的那样。

您能解释一下这是为什么吗?如果您有更好的解决方案,请帮我找到一个更好的解决方案? 谢谢

最佳答案

这有效:

导入java.util.*;

class S {

    public static void main(String[] args) {
        Scanner fileScan= new Scanner("hi my name is mario!").useDelimiter("[ ,!?.]+");
        String word;
        while(fileScan.hasNext()){       
            word= fileScan.next();
            System.out.println(word);
        }

    } // end of main()
}


javac -g S.java && java S
hi
my
name
is
mario

关于java - 如何在Java中扫描不包括标点符号的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7639947/

相关文章:

java - 在同一台机器上运行的不同 JVM 之间共享 hashmap

java - RecyclerView 适配器的 Kotlin 泛型

python - 如何编写一个 BeautifulSoup 过滤器,它只解析标签之间带有特定文本的对象?

Java DecimalFormat 省略小数点前的前导零

java - 如何从 Spring Boot 提供静态 html?

java - 如何将 2 个 HashMap 合并在一起?

java - 如何在另一个模式中再次使用声明的正则表达式模式?

xml - 在 Android 中使用 Sax 解析本地 XML 文件

java - 将包含中文或日文或英文的字符串拆分为单词

parsing - 为什么有 LR(0) 解析器而没有 LL(0) 解析器?