忽略除字母和数字以外的任何内容的定界符模式
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
我在 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