0

我正在尝试按照我的问题所述做,所以我有以下代码可以找到匹配项。

String test = scan.next();
if (test.equals("$let"))
return 1;

但是,我更喜欢使用 hasNext 来不使用令牌;但是,当我执行以下操作时,它失败了。
if (scan.hasNext("$let"))
return 1;

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

谢谢您的帮助!

4

2 回答 2

2

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

于 2009-10-01T20:26:58.113 回答
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.

于 2010-04-14T01:11:31.740 回答