忽略除字母和数字以外的任何内容的定界符模式

Delimiter pattern that ignores anything but letters and numbers

我在 Google 和本网站上到处寻找忽略标点符号的定界符模式 (,./?><;:'"[{]}-_=+()*&^% $#@!) 并且只接受数字和单词。

我试过使用:

Scanner fileScanner = new Scanner(new File("File.txt")).useDelimiter("[.,:;()?!\" \t]+~\s");

      Scanner fileScanner = new Scanner(new File("File.txt")).useDelimiter("[ ,!?.]+");

但是第一个给了我一个 NoSuchElementException 而第二个没有给我我需要的结果。我应该使用什么?

您可以使用负 class 正则表达式,例如:

[^A-Za-z0-9]

顺便说一句,你必须在 java 字符串中转义 \。对于您的分隔符:

"[.,:;()?!\" \t]+~\s"  change it to:
"[.,:;()?!\" \t]+~\s"

如果我们希望正则表达式可以处理 ASCII 以外的字符,我们应该使用 Java 字符 类,像这样

[^\p{javaDigit}\p{javaLetter}]

或 Unicode 字符 类,参见模式 API