我正在编写一个程序来扫描文本文件,然后将每个单词写入Hashmap。
Scanner类具有defualt空格分隔符。但是我最终把我的文字存放在附加标点符号上。我希望扫描仪将周期,昏迷和其他类型的常见标点识别为停止令牌的标志。这是我的尝试:
Scanner line_scanner = new Scanner(line).useDelimiter("[.,:;()?!\" \t]+~\\s");
扫描仪基本上忽略了所有空格,即使我有'\\ s'作为表达式的一部分。对不起,但我对正则表达式几乎一无所知。
答案 0 :(得分:4)
Scanner line_scanner = new Scanner(line).useDelimiter("[.,:;()?!\"\\s]+");
答案 1 :(得分:0)
您可能不会使用unicode字母:
useDelimiter("[^\\p{L}\\p{M}]+");
([^ ...]不是,大写p表示Unicode类别,L是字母,M是变音组合标记(重音符号)。)