Ленивый, жадный или что? Ищете окончательную ссылку на Regex

Недавно где-то в сети * я нашел ссылку на регулярные выражения, в которой описывался "третий способ" жадности, отличный от жадного (.*) и ленивого (.*?) сопоставления.

Теперь я пытался искать SO, Google и даже искать историю моего браузера, но безрезультатно.

Кто-нибудь может предположить, что я видел?


Уточнение: это относилось к тому, что было для меня новой конструкцией (что-то вроде .*+), и я полагаю, что у нее даже было название (что-то вроде, но, вероятно, не "пассивно жадный").


* Я понимаю, что фраза "где-то в сети" так же полезна, как "в Вавилонской библиотеке" или "в множестве Мандельброта", но, пожалуйста, постарайтесь помочь


person Brent.Longborough    schedule 19.02.2009    source источник
comment
Что ж, шесть лет спустя кто-то, наконец, проголосовал за этот вопрос. Не могли бы вы поделиться с нами своей критикой? Так мы можем учиться и совершенствоваться. В качестве альтернативы, если у вас просто был плохой день, вы всегда можете снова проголосовать за него, когда жизнь наладится.   -  person Brent.Longborough    schedule 27.01.2015
comment
DV, вероятно, потому, что ваш вопрос расплывчатый и не имеет контекста. Эта страница, по-видимому, малоценна для исследователей, потому что она находится на SO уже более десяти лет и имеет очень мало голосов в любом месте на странице.   -  person mickmackusa    schedule 05.07.2021


Ответы (6)


Существуют различные пакеты регулярных выражений. PCRE (Perl-совместимые регулярные выражения) используются (более или менее) в Perl, Java, PHP и, возможно, других языках. справочная страница PCRE может рассматриваться как исчерпывающий справочник. Он описывает притяжательные квантификаторы (например, *+ и ++), которые являются сокращением для атомарных групп.

person Bennett McElwee    schedule 19.02.2009

Я думаю, вы имеете в виду притяжательное сопоставление. Java описывает это на этой странице: http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

Притяжательные квантификаторы, которые жадно сопоставляют столько, сколько могут, и не отступают, даже если это позволит добиться успеха в целом.

Синтаксис такой же, как вы описали (.*+) .

person Adam Crume    schedule 19.02.2009
comment
Извините, что не принял ваш ответ, но я считаю, что у Беннета МакЭлви есть лучшая ссылка. - person Brent.Longborough; 19.02.2009

Это может быть? http://www.regular-expressions.info/repeat.html

An Alternative to Laziness

In this case, there is a better option than making the plus lazy. We can use a greedy plus and a negated character class: <[^>]+>.

person mletterle    schedule 19.02.2009
comment
Это хорошая ссылка, но, похоже, там нет того, что я думал, что видел... Спасибо. - person Brent.Longborough; 19.02.2009
comment
На самом деле в нем было то, что я искал, чуть дальше по учебнику. Извините, второй раз не могу проголосовать... - person Brent.Longborough; 19.02.2009
comment
Я вижу только один плюс; должно быть два: ‹[^›]++› - person Alan Moore; 23.02.2009

Ну, не совсем отсылка, но все же хорошо. Освоение регулярных выражений

Есть еще "справочная" книга от О'Рейли, но я не могу дать по ней показания. Просто первый раз увидел.

person Rook    schedule 19.02.2009

Я всегда храню копию этой шпаргалки по регулярным выражениям удобно в моем кубе.

person Barry    schedule 19.02.2009

Спасибо вам всем. Ключ к возвращению моей памяти был «собственническим», а не «пассивным».

Вот пара полезных ссылок:

person Brent.Longborough    schedule 19.02.2009