Java-如何使用.useDelimiter()将dilimiter设置为多个不同的对象?

Java-如何使用.useDelimiter()将dilimiter设置为多个不同的对象?,java,java.util.scanner,Java,Java.util.scanner,我希望使用Scanner类方法:.useDilimiter()来解析文件,之前我会使用一系列.replaceAll()语句来替换我想要的dilimiter 无论如何,我正在尝试使一个扫描器限制以下任何字符:,(,),{,},[,],,,和标准空白。我该怎么做呢 扫描程序使用正则表达式(regex)来描述分隔符。默认情况下,它是\p{javaWhitespace}+,表示一个或多个(由于+运算符)空白 在正则表达式中,表示我们可以使用的字符集中的单个字符。但由于正则表达式中的[和]表示字符类的开始

我希望使用
Scanner
类方法:
.useDilimiter()
来解析文件,之前我会使用一系列
.replaceAll()
语句来替换我想要的dilimiter


无论如何,我正在尝试使一个
扫描器
限制以下任何字符:
{
}
[
]
标准空白
。我该怎么做呢

扫描程序使用正则表达式(regex)来描述分隔符。默认情况下,它是
\p{javaWhitespace}+
,表示一个或多个(由于
+
运算符)空白

在正则表达式中,表示我们可以使用的字符集中的单个字符。但由于正则表达式中的
[
]
表示字符类的开始和结束,所以这些字符是元字符(甚至在字符类内部)。要将它们视为文字,我们首先需要对它们进行转义。我们可以通过

  • 在它们之前添加
    \
    (以写为
    “\\\”
    的字符串形式)
  • 或者将它们放在表示引号部分的
    \Q..\E
    中(其中所有字符都被视为文字,而不是元字符)
所以regex表示
(){}[]中的一个字符可以看起来像
“[\\Q(){}[],!\\E]”

如果要添加对标准分隔符的支持,可以使用OR运算符将此正则表达式与
\p{javaWhitespace}+
组合,OR运算符为

因此,您的代码可以如下所示:

yourScanner.useDelimiter("[\\Q(){}[],!\\E]|\\p{javaWhitespace}+");

可能的副本谢谢!非常有帮助,因为我仍然很困惑regex@Quabs不客气。由于您是新来的,您可能不知道如果某个答案解决了您的问题,您可以将其标记为解决方案。更多信息请访问。