Почему регулярное выражение «\\[\\]» избыточно в Java?

Я хочу сопоставить только скобку [] в моем коде:

// #peekToken() -> String
do { ... } while (context.peekToken().matches("\\[\\]"));

intellij говорит:

Почему регулярное выражение «\\[\\]» избыточно в Java?

и автоматическое исправление превращает его в:

"\\[]"

Почему они одинаковы?

Потому что ], когда шаблон в данный момент не находится внутри набора символов, не нужно экранировать, чтобы соответствовать буквальному ]

CertainPerformance 31.05.2019 06:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
1
649
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что символ «закрыть скобку» ] не является регулярным выражением, если перед этим не была открыта скобка [. Поэтому экранировать его избыточно \\], поскольку Java достаточно умен, чтобы знать, что в этом случае мы ищем сам символ.

Вы можете прочитать документация для получения дополнительной информации о контекстах, в которых символы воспринимаются как регулярные выражения.

s/Java/regex/g
Boris the Spider 31.05.2019 06:42

Другие вопросы по теме