2010-09-10 5 views
1

Спецификация Java EE REST, JAX-RS, описывает перевод переменных пути в регулярные выражения, например, в /customer/{id}.'+' и '?' последовательно в регулярном выражении

От JAX-RS 1.1 Spec, стр 19:

заменить каждый переменный шаблон URI с захватом группой, содержащей указанное регулярное выражением или '(? [/] +)', Если нет регулярного выражения не является указано.

В API Java документ из java.util.regex.Pattern говорит:

X?  X, once or not at all 
X+  X, one or more times 

Итак, что означает +??

ответ

9

? сразу после + или * означает, что он не будет жадным.

Например:
(.*)f в "testftestf", первая группа будет соответствовать "testftest"
(.*?)f в testftestf», первая группа будет соответствовать "тест"


Ресурсы:

+2

, чтобы уточнить, негласное выражение - это выражение, в котором производится кратчайшее совпадение, а в жадном - самый длинный из возможных. – bgw

+0

Спасибо, я этого не знал. Но что это значит в этом случае '([/] +?)'? Насколько я понимаю, все читается до следующего '/', было бы жадно или нет. – deamon

+0

В этом случае часть '[/] +' была бы ленивой и попыталась поймать только один символ ('+' по крайней мере один) с [^ /] *? ничего не поймают. –