Используя сканер в Java, как я могу иметь следующий (aString), где строка не является шаблоном регулярных выражений? - PullRequest
0 голосов
/ 02 октября 2009

Я пытаюсь сделать, как говорится в моем вопросе, ооо, у меня есть следующий код, который найдет совпадение.

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

Однако я бы предпочел использовать hasNext, чтобы не использовать токен; однако, когда я делаю следующее, это терпит неудачу.
if (scan.hasNext("$let"))<br> return 1;

Я понимаю, что когда у переменной есть следующая переменная, она ожидает шаблон, но я подумала, что если у меня нет символов регулярного выражения, это должно работать. Я также подумал, что $, возможно, был символом регулярного выражения, поэтому я попытался / $, однако, это не сработало!

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Вы должны использовать \\ $ для выхода из регулярного выражения, но проще просто получить next () и сохранить результат.

0 голосов
/ 14 апреля 2010

В общем, если у вас есть произвольная строка, которую вы хотите сопоставить буквально без значения для любых метасимволов регулярного выражения, вы можете использовать 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.

...