@ru_python

Страница 812 из 9768
Aldar
26.05.2016
10:01:04
что это значит ? .*+

Kolyann
26.05.2016
10:01:26
что это значит ? .*+
Вопрос тут лишний

Aragaer
26.05.2016
10:01:42
я не знаю, что значит .*+

Google
Aldar
26.05.2016
10:01:50
любой символ, который повторяется от нуля до бесконечности, и это в свою очередь либо 1 раз либо бесконечно повторяется

Kolyann
26.05.2016
10:01:51
А *+ это сверхжадный квантификатор

Aldar
26.05.2016
10:01:58
мне кажется это ошибка

Aragaer
26.05.2016
10:02:00
как это?

Kolyann
26.05.2016
10:02:06
Который при фэйле не откатывается

Aragaer
26.05.2016
10:02:17
ээм

Kolyann
26.05.2016
10:02:19
Проще на хабре найти, я не осилю обьяснить)

Aragaer
26.05.2016
10:02:25
это где такое?

в перле была возможность включить матч без откатывания

Anton
26.05.2016
10:02:40
.* - так ведь и так жаднй

Aragaer
26.05.2016
10:02:41
но точно не так

Kolyann
26.05.2016
10:03:20
.* - так ведь и так жаднй
А есть ещё сверхжадный

Марк
26.05.2016
10:03:45
я не знаю, что значит .*+
йя там левый плюс воткнул. Уже убрал, не парся

Google
Anton
26.05.2016
10:04:07
ща перл позырю, что там как в плане без оглядки смотреть

Марк
26.05.2016
10:04:26
твоя психика достаточно крепка?

Anton
26.05.2016
10:05:00
Normally when a quantified subpattern does not allow the rest of the overall pattern to match, Perl will backtrack. However, this behaviour is sometimes undesirable. Thus Perl provides the "possessive" quantifier form as well. *+ Match 0 or more times and give nothing back ++ Match 1 or more times and give nothing back ?+ Match 0 or 1 time and give nothing back {n}+ Match exactly n times and give nothing back (redundant) {n,}+ Match at least n times and give nothing back {n,m}+ Match at least n but not more than m times and give nothing back

*+ и ++, Колян прав

Kolyann
26.05.2016
10:06:20
У сверхжадного квантификатора очень особенные области применения

Он нужен когда мы при поиске не боимся отката назад

Но я сходу не могу придумать рабочий пример)

Марк
26.05.2016
10:07:29
война и мир 5 абзац? ))
Наверное) Была еще тема: распиваем всякие алкогольные напитки. Вваливается чувак с "ща вас, школие мамкино, буду серьезным вещам учить", логиниться на продакт оракл мейнфрейм, зависает секунд на десять. "не, это плохая идея, пожалуй"

Жаль, такая экскурсия намечалась

Anton
26.05.2016
10:09:20
Но я сходу не могу придумать рабочий пример)
я вот тоже, но там скорость на порядки на некоторых поисках может вырасти, думаю когда сложный шаблон и не хер его особо рассусоливать, проще на нексколько регулярок разхбить и пройти без заглядывания назад

Aragaer
26.05.2016
10:09:51
вроде так - (?>паттерн) это матч без бэктрека

Kolyann
26.05.2016
10:10:14
сверхжадные квантификаторы. Почему «сверхжадные»? Потому что они, во-первых, ведут себя как жадные, т. е. захватывают как можно больше из цепочки. Во-вторых, они, в каком-то смысле, ещё «жаднее» жадных и идут дальше них: один раз что-то «схватив», они никогда не откатываются назад, они не «отдают» кусочки схваченного ими следующим частям регекса

Aragaer
26.05.2016
10:11:25
нет

?= это позитив лукахед

Марк
26.05.2016
10:11:42
.* - эти отдают разве?

Aragaer
26.05.2016
10:11:49
а ?> это другое

пример

паттерн a*ab

он матчит aaab

Google
Kolyann
26.05.2016
10:12:20
А тогда (?: ...)

Aragaer
26.05.2016
10:12:30
а паттерн ^(?>a*)ab ничего не матчит

Kolyann
26.05.2016
10:12:37
Этот не запоминает в группу

Марк
26.05.2016
10:12:39
это ж не запоминает группировку

Aragaer
26.05.2016
10:12:48
?: это незахватывающая группировка

Kolyann
26.05.2016
10:13:00
А, понял

То есть даже если не сматчит то уйдёт вперёд?

Aragaer
26.05.2016
10:13:24
?> это неотдающая группировка

не, ?>a* зохавает в себя все а

и потом на ab ничего не останется, а он уже не отдаст

Kolyann
26.05.2016
10:14:20
Идея фикс - писать все что можно на регэкспах в продакшне

Aragaer
26.05.2016
10:14:23
обычный a* зохавает все a, потом нужна еще одна и тогда a* одну отдаст

Kolyann
26.05.2016
10:14:31
И шантажировать своим увольнением

Aragaer
26.05.2016
10:14:43
да у нас тут блин

один умелец

ща, немножко кошмариков

if [[ $path == ftp:\/\/* ]]; then ftp_source_path=$(echo "$path" | sed -e "s/^ftp:\/\///g") ftp_user_passwd=$(echo "$ftp_source_path" | sed -e "s/\/.*//g") ftp_user=$(echo "$ftp_user_passwd" | sed -e "s/\@.*//g") ftp_passwd=$(echo "$ftp_user_passwd" | sed -e "s/^[^\@]*[\@]//g") ftp_source_path=$(echo "$ftp_source_path" | sed -e "s/^[^\/]*[\/]//g") ftp_source_host=$(echo "$ftp_source_path" | sed -e "s/\/.*//g") ftp_source_dir=$(echo "$ftp_source_path" | sed -e "s/^[^\/]*[\/]//g")

это баш

человек уволился почти год назад. Этот код все еще в продакшне

Марк
26.05.2016
10:17:01
не, ?>a* зохавает в себя все а
Обычный a* хавает все a. А этот как себя ведет?

Google
Aragaer
26.05.2016
10:17:09
он хавает все a

Марк
26.05.2016
10:17:31
В чем приколь тогда?

Aragaer
26.05.2016
10:17:33
но если сразу после него что-то не матчится, то происходит бэктрек и a* отдает a по одному с повторной проверкой

Aragaer
26.05.2016
10:17:37
а этот ничего не отдает

Марк
26.05.2016
10:18:03
Всмысле?

Aragaer
26.05.2016
10:18:12
строка "aab", два регекспа - "^a*ab" и "^(?>a*)ab"

Aragaer
26.05.2016
10:18:31
первый матчится - в a* забирается сначала две буквы а, потом нет матча, одна а отдается, есть матч

Admin
ERROR: S client not available

Sharkus
26.05.2016
10:18:37
это баш

Kolyann
26.05.2016
10:18:42
Второй не отдаст потому что сожрет все а и упрется в б

Aragaer
26.05.2016
10:18:56
второй регексп не матчится - в (?>a*) забирается все а, матча нет, ничего не отдается

язык - баш

Марк
26.05.2016
10:19:05
a*?b - аналогично жеж

Kolyann
26.05.2016
10:19:19
a*?b - аналогично жеж
Аналогично первому

Aragaer
26.05.2016
10:19:39
нет, оно сматчит просто b

надо a+b

беда в том, что a*ab будет оооочень медленно работать выясняя, что "ааааааааааааааааааааааааа" не матчит

сначала зохавает все, увидит, что нет матча. Отдаст одну a, снова зохавает все

Google
Aragaer
26.05.2016
10:20:57
а, вру

a*a*a*a*b

вот такой вроде пример

оно будет безумно медленно проверять

Марк
26.05.2016
10:21:25
aab a*?b - сматчит aa. (?>a*) сматчит еще и одно b?

Aragaer
26.05.2016
10:22:15
нет

Kolyann
26.05.2016
10:22:17
aab a*?b - сматчит aa. (?>a*) сматчит еще и одно b?
Если там будет (?>а*)аб то он не увидит б

Aragaer
26.05.2016
10:22:36
он увидит б, но нужна еще одна а

Марк
26.05.2016
10:22:43
Тогда в чем разница?

Kolyann
26.05.2016
10:22:44
Потому что скобка съест все а и не откатится для поиска аб

Aragaer
26.05.2016
10:22:45
но она уже зохавана и ее не отдатут

ну вот кстати (?>a*?)ab сработает

нежадный без откатывания 8)

но он ничем не будет отличаться от обычного нежадного

Марк
26.05.2016
10:24:51
блядь, я в чатике прогеров сижу или мне для деградирования ipython открывать?

Anton
26.05.2016
10:25:37
вообще по идее свержадные оправданы на большом тексте, где нужно кусок выдрать в рандомном месте, обратные поиски на больших текстах в десятки раз замедляют выполнение регулярки

Kolyann
26.05.2016
10:26:27
Я бы вообще не стал юзать регэкспы на больших текстах ?

Anton
26.05.2016
10:27:01
в перле по крайней мере, в питоне же вродее pcre впилена

Sharkus
26.05.2016
10:27:23
Kolyann
26.05.2016
10:27:36
Ну если построчно

Страница 812 из 9768