0

私は私の質問が述べているようにやろうとしています、すっごく私は一致を見つけるだろう次のコードを持っています。

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

ただし、トークンを消費しないように、hasNextを使用することをお勧めします。しかし、私が次のことをすると失敗します。
if (scan.hasNext("$let"))
return 1;

与えるときに次の変数がパターンを期待していることに気付きましたが、正規表現記号がない場合は機能するはずだと思いました。また、$はおそらく正規表現の記号だと思ったので、/ $を試しましたが、うまくいきませんでした。

助けてくれてありがとう!

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 に答える