在Java中使用Scanner如何在字符串不是正则表达式模式的情况下进行下一步(aString)?

在Java中使用Scanner如何在字符串不是正则表达式模式的情况下进行下一步(aString)?,java,regex,java.util.scanner,Java,Regex,Java.util.scanner,我试着按照我的问题所说的去做,所以我有下面的代码可以找到匹配的 字符串测试=scan.next() 如果(测试等于($let)) 返回1; 但是,我更愿意使用hasNext,因为它不使用代币;但是,当我执行以下操作时,它会失败。 如果(scan.hasNext($let)) 返回1; 我意识到when-giving下一个变量需要一个模式,但我认为如果我没有任何正则表达式符号,它应该可以工作。我还认为$可能是某种正则表达式符号,所以我尝试了/$但是,这不起作用 谢谢你的帮助 您应该使用\\

我试着按照我的问题所说的去做,所以我有下面的代码可以找到匹配的


字符串测试=scan.next()
如果(测试等于($let))
返回1;

但是,我更愿意使用hasNext,因为它不使用代币;但是,当我执行以下操作时,它会失败。

如果(scan.hasNext($let))
返回1;

我意识到when-giving下一个变量需要一个模式,但我认为如果我没有任何正则表达式符号,它应该可以工作。我还认为$可能是某种正则表达式符号,所以我尝试了/$但是,这不起作用


谢谢你的帮助

您应该使用\\$来转义正则表达式,但是只获取next()并保存结果更容易。

一般来说,如果您有一些任意字符串,您想与任何正则表达式元字符进行字面匹配,但没有任何意义,您可以使用

您也可以使用
\Q
\E
引号标记,但当然需要确保引用的字符串本身不能包含
\E

Scanner sc = new Scanner("$)}**");
System.out.println(sc.hasNext(Pattern.quote("$)}**"))); // prints "true"
System.out.println(sc.hasNext("\\Q$)}**\\E")); // prints "true"
System.out.println(sc.hasNext("$)}**")); // throws PatternSyntaxException