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

Tra*_*man 0 java parsing

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

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

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

你能解释一下为什么会这样,如果你有的话,可以帮助我找到更好的解决方案吗?谢谢

Mis*_*ble 5

这有效:

导入 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
Run Code Online (Sandbox Code Playgroud)