У меня возникли проблемы с разбором python, например списками со сканерами на Java. По какой-то причине я, кажется, что-то делаю неправильно, когда пытаюсь обнаружить квадратные скобки. Что меня больше всего волнует, так это то, что как-то появление квадратных скобок во входе вызывает нежелательное поведение.Сканер Java не соответствует квадратным скобкам
Scanner scanner1 = new Scanner("a[");
assert(scanner1.hasNext("a\\[")); // Does not trigger assertion
Scanner scanner2 = new Scanner("[[0]]");
assert(scanner2.hasNext("\\[")); // Triggers assertion, but why?
Scanner scanner3 = new Scanner(" a[[[0]]");
assert(scanner3.hasNext("a\\[")); // Triggers assertion, but why?
Это использование
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
Что здесь не работает? Scanner.hasNext соответствует следующему токену, в первом случае его '' a ["' поэтому он совпадает с patter. Но во втором случае его '' [[0]] "', но вы пытаетесь сопоставить его с '' ["' alone. Если вы хотите совместить их, ваш шаблон должен быть '' \\ [. * "' – Codebender
Aaaah, поэтому в отличие от 'skip()' Мне нужно «разрешить» дополнительные символы. Это действительно имеет смысл. –