2013-06-25 4 views
1

У меня есть это регулярное выражение:Основные значения регулярного выражения?

'/^ANSWER\:(.+?)$/' 

Я знаю, что примерно переводится как:

строк, которые начинаются с «Ответ:» и ...

Я не совсем уверен, что

(.+?)$ 

переводит? Любая помощь будет принята с благодарностью!

ответ

7
(  # begin capturing group 
    .+?  # match any character (.) one or more times (+) as few times as possible (?) 
)  # end capturing group 
$  # end of string anchor (or end of line anchor, if multiline option is enabled) 

Следующая ссылка имеет хорошую сводку регулярных выражений синтаксиса:
http://www.regular-expressions.info/reference.html

+0

В чем разница между '. +?' И '. +'? – invisal

+1

@invisal с вопросительным знаком 'как можно несколько раз, расширяя по мере необходимости (ленивый)' без 'столько раз, сколько возможно, отдавая при необходимости (жадный)' – Scuzzy

+4

'. +' Жадный (соответствует как можно большему количеству символов), '. +?' ленив (соответствует как можно меньше символов). Поэтому для строки '" red blue "', '. + E' будет соответствовать целая строка, но'. +? E' будет просто соответствовать '' re ''. –

2

круглые скобки часть регулярного выражения соответствует захвату группы или часть регулярного выражения, которые могут быть упомянутый позже, так что вы можете получить любой текст, соответствующий подрегулярному выражению внутри группы захвата. Значение . означает совпадение с одним символом, а + означает хотя бы один экземпляр, поэтому .+ можно считать «по крайней мере одним из символов». Тем не менее, + сам по себе является «жадным», что означает, что оно соответствует как можно большему количеству символов, тогда как после него следует ?, ему дается указание «лениво» или как можно меньше символов. Поскольку регулярное выражение заканчивается $, я думаю, что ? не изменит, как строки с регулярным выражением совпадают, так как любое совпадение будет принудительно соответствовать всем символам до конца строки.

+2

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