Size: a a a

Чат подкаста «Разбор Полётов»

2020 April 24

FL

First name (required) Last name (optional) in Чат подкаста «Разбор Полётов»
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
@vladimirsitnikv а помнишь ты когда-то рассказывал пр ооптимизаацию регулярок? У меня тут есть несколько простеньких:
"(?<delim>[^\\w\n\"'])(?<space> ?)(?<quote>[\"']).*?\\k<quote>\\k<delim>",
"(?:^|\n)(?<quote>[\"']).*?\\k<quote>(?<delim>[^\\w\n\"'])(?<space> ?)",
"(?<delim>[^\\w\n\"'])(?<space> ?)(?<quote>[\"']).*?\\k<quote>(?:$|\n)",
"(?:^|\n)(?<quote>[\"']).*?\\k<quote>(?:$|\n)"
, скопилированных с DOT_MATCHES_ALL, MULTILINE
Знаешь ли ты как их можно сделать быстрее?
так вроже ж есть автоматические оптимизаторы регулярок
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Andrey Listochkin
так вроже ж есть автоматические оптимизаторы регулярок
это как?
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
да какой-то модуль на Перле видел, ему кормишь регулярку, а онтебе выдает эквивалентную, но с минимумом бектреккинга
источник

VS

Vladimir Sitnikov in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
@vladimirsitnikv а помнишь ты когда-то рассказывал пр ооптимизаацию регулярок? У меня тут есть несколько простеньких:
"(?<delim>[^\\w\n\"'])(?<space> ?)(?<quote>[\"']).*?\\k<quote>\\k<delim>",
"(?:^|\n)(?<quote>[\"']).*?\\k<quote>(?<delim>[^\\w\n\"'])(?<space> ?)",
"(?<delim>[^\\w\n\"'])(?<space> ?)(?<quote>[\"']).*?\\k<quote>(?:$|\n)",
"(?:^|\n)(?<quote>[\"']).*?\\k<quote>(?:$|\n)"
, скопилированных с DOT_MATCHES_ALL, MULTILINE
Знаешь ли ты как их можно сделать быстрее?
Там речь про possessive quantifier (напр https://docs.oracle.com/javase/tutorial/essential/regex/quant.html , https://www.regular-expressions.info/recursebacktrack.html ).

Т.е. стоит заменять .*? на что-нибудь типа [^"]*+
Смысл в том, что тогда движок regexp’ов не будет выполнять backtracking, что ценно, если regexp вообще не подошёл.

Но у тебя кавычки «либо-либо», и что-то сходу не знаю возможно ли написать [^\k<delim>]*+
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Vladimir Sitnikov
Там речь про possessive quantifier (напр https://docs.oracle.com/javase/tutorial/essential/regex/quant.html , https://www.regular-expressions.info/recursebacktrack.html ).

Т.е. стоит заменять .*? на что-нибудь типа [^"]*+
Смысл в том, что тогда движок regexp’ов не будет выполнять backtracking, что ценно, если regexp вообще не подошёл.

Но у тебя кавычки «либо-либо», и что-то сходу не знаю возможно ли написать [^\k<delim>]*+
ну .*? у меня тоже есть
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
а, понял
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
источник

AL

Andrey Listochkin in Чат подкаста «Разбор Полётов»
use Regexp::Optimizer;
 my $o  = Regexp::Optimizer->new->optimize(qr/foobar|fooxar|foozap/);
 # $re is now qr/foo(?:[bx]ar|zap)/
источник

VS

Vladimir Sitnikov in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
ну .*? у меня тоже есть
Объясняю: .*?  будет постепенно расширяться (пока кавычку не найдёт). Но, потом, если после кавычки окажется что-то неожиданное, то .*? будет сжиматься (backtacking).  А .?*+ запретит такое.
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Vladimir Sitnikov
Объясняю: .*?  будет постепенно расширяться (пока кавычку не найдёт). Но, потом, если после кавычки окажется что-то неожиданное, то .*? будет сжиматься (backtacking).  А .?*+ запретит такое.
да-да, я осознал
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
да-да, я осознал
у меня самые охрененные оптимизации были когда .* заменял на что-то типа [^/]* - т.е. не вообще все символы пролетать, а просто "до не такой"
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
Aleksandr Semyannikov
А вообще я охуеваю, конечно. Читаю истории угоревших чуваков и многие из них спекулировали всеми деньгами, это жесть, конечно. Управление рисками - не не слышали.
Ты че, пес, ОНИ ПЛАТЯТ НОЛОГИ!!! У НИХ КРЕДИТЫ И ЕСТЬ НЕЧЕГО!!! ВСЕ ПОБЕЖАЛИ И СКИНУЛИСЬ!!!
источник

ПФ

Паша Финкельштейн in Чат подкаста «Разбор Полётов»
Alexey Abashev
у меня самые охрененные оптимизации были когда .* заменял на что-то типа [^/]* - т.е. не вообще все символы пролетать, а просто "до не такой"
ну Володя это и предлагает, да 😊
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
Паша Финкельштейн
ну Володя это и предлагает, да 😊
ну на то и перформанс инженер )))
источник

VS

Vladimir Sitnikov in Чат подкаста «Разбор Полётов»
Alexey Abashev
ну на то и перформанс инженер )))
Ну, я предлагаю заменять на [^/]*+ (с плюсиком в конце)
источник

A

Anton in Чат подкаста «Разбор Полётов»
источник

A

Anton in Чат подкаста «Разбор Полётов»
источник

A

Anton in Чат подкаста «Разбор Полётов»
источник

A

Anton in Чат подкаста «Разбор Полётов»
источник