我正在尝试按照我的问题说明,所以我有以下代码可以找到匹配项。
String test = scan.next();
if (test.equals("$let"))
return 1;
但是,我更喜欢使用hasNext来不使用令牌;但是,当我执行以下操作时,它会失败
if (scan.hasNext("$let"))
return 1;
我意识到当给出下一个变量时它期望一个模式,但我想如果我没有任何正则表达式符号它应该工作。我还以为$可能是一些正则表达式符号所以我试过/ $然而,这不起作用!
感谢您的帮助!
答案 0 :(得分:2)
你应该使用\\ $来逃避正则表达式,但是更容易获得next()并保存结果。
答案 1 :(得分:0)
一般情况下,如果你有一些字面意义的字符串与任何正则表达式元字符无关,你可以使用java.util.Pattern.quote
。
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
您还可以使用\Q
和\E
引号,但当然您需要确保引用的字符串本身不能包含\E
。