分隔符模式忽略除字母和数字之外的任何内容

时间:2015-04-04 23:54:01

标签: java java.util.scanner delimiter

我在谷歌和本网站的任何地方都找到了一个忽略标点符号的分隔符模式(,。/?>&lt ;;:'" [{]} -_ = +()*& ; ^%$#@!)并且只接受数字和单词。

我尝试过使用:

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用负类正则表达式:

[^A-Za-z0-9]

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

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

答案 1 :(得分:0)

如果我们希望正则表达式使用ASCII以外的字符,我们应该使用Java字符类,比如

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

或Unicode字符类,请参阅Pattern API