Java - регулярное выражение для соответствия между двумя / - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть требование, чтобы соответствовать всем входящим запросам и отфильтровывать определенные запросы на основе URL запроса. В настоящее время я пытаюсь использовать регулярное выражение типа /app/webapp/users/*/resource/path для соответствия /app/webapp/users/<some_user_id>/resource/path. Но ни один из входящих запросов не соответствует регулярному выражению. В чем проблема с регулярным выражением, которое я пытаюсь использовать? (Я использую метод match класса String для сравнения).

1 Ответ

5 голосов
/ 04 апреля 2011

/*/ для меня больше похоже на шар, чем на регулярное выражение.Это будет соответствовать любому количеству косых черт, в то время как я ожидаю, что вы хотите, чтобы оно совпадало с любым количеством символов между косыми чертами.Вместо этого попробуйте /.+/ или, возможно, /[^/]+/, если вы хотите, чтобы он соответствовал только одному уровню (т.е. если / app / webapp / users / foo / bar / baz / resource / path не должен совпадать).

РЕДАКТИРОВАТЬ: Как упоминал Иоахим, еще один способ сопоставления только одного уровня заключается в использовании /.+?/, чтобы сделать его "неохотно" соответствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...