Различия между (. *) И (. *?)

Возможный дубликат:
что означает ленивое и жадное средство в регулярном выражении?

Я знаю, что в Regex вопросительный знак после *, + или? означает неровный, но если я хочу соответствовать любому персонажу, в чем разница между использованием (. *) или (. *?)?

Благодарю.

EDIT: В моем случае я хочу проверить URL. Каковы различия между

http://site\.net/(.*?)\.html 

а также

 http://site\.net/(.*)\.html 

?

Предположим, что у вас есть этот URL:

 http://site.net/some/wierd/path.html?returnTo=somedoc.html 

Жадный будет соответствовать всей линии:

 http://site.net/some/wierd/path.html?returnTo=somedoc.html 

в то время как non gready возвращается:

 http://site.net/some/wierd/path.html 

http://refiddle.com/ отлично подходит для тестирования регулярных выражений

.* является жадным, что означает, что он будет игнорировать следующий разделитель вашего регулярного выражения до тех пор, пока он сам не будет выполнен, если только регулярное выражение, следующее .* не соответствует концу целевой строки.

.*? является неотразимым, что означает, что он перейдет к следующему разделителю вашего регулярного выражения, если следующий будет выполнен. Он будет продолжаться до следующего разделителя, даже если сам по-прежнему применим.

Пример:

/(.*) dog/ будет соответствовать «Я думаю, что ваша собака укусила мою собаку», а группа 1 будет «Я думаю, что ваша собака укусила меня».

/(.*?) dog/ будет соответствовать «Я думаю, что твоя собака укусила мою собаку», а группа 1 будет «Я думаю твоя».

Если в регулярном выражении нет ничего (.*) То нет никакой разницы. Однако, если есть что-то следующее, то есть разница:

 "I went to the shops and then I went home" /(.*) went/ => "[I went to the shops and then I] went" /(.*?) went/ => "[I] went" 

Поскольку вы уже знаете, что негласное поведение в шляпе, я не буду объяснять это снова.

Это зависит от того, что происходит после (.*?) Это то, за что невращающееся поведение.

Интересно, что это означает, что регулярное выражение в форме / (.* /(.*?)/ не имеет большого смысла – потому что, как вы можете быть ленивым, если вы все равно согласитесь?

Если вы попытаетесь создать это регулярное выражение, например, в Regexr , оно даже не будет компилироваться, потому что это абсурд.

Только если вы поместите что-то за группу, ваше регулярное выражение будет иметь какой-то смысл. Я не уверен, что все двигатели rege делают то же самое, что и Regexr, и отказываются принимать это регулярное выражение.

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

Привести его к выводу; это не имеет никакого значения, ЕСЛИ нет ПОСЛЕ группы.