- 1
^[\s\u200c]+|[\s\u200c]+$
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
^[\s\u200c]+|[\s\u200c]+$
Стековерфло не могут в регулярные выражения или регулярные выражения не могут в простейшую задачу?
http://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016
1024-- 24.07.2016 10:32 # +1
bormand 24.07.2016 11:11 # 0
bormand 24.07.2016 11:26 # +2
Питонобляди соснули.
1024-- 24.07.2016 11:34 # +1
Питон 2.6:
Жс на Chrome 51 (впрочем, в Firefox тоже тормозит):
bormand 24.07.2016 11:37 # +3
1024-- 24.07.2016 11:44 # +1
3_14dar 24.07.2016 19:15 # −3
А нахуя match и search я давно интересовался. К этому теперь fullmatch добавили, хоть что-то полезное.
kipar 24.07.2016 19:17 # +4
bormand 24.07.2016 19:17 # 0
3_14dar 24.07.2016 19:23 # −2
А крышку с вопросиком низзя? И в чем великий сука смысл такой регулярки?
3_14dar 24.07.2016 19:29 # −1
bormand 24.07.2016 21:30 # 0
3_14dar 24.07.2016 21:44 # −4
bormand 24.07.2016 21:58 # 0
А в чём проблема? Для того компиляция и сделана, чтобы несколько раз можно было запускать без повторного парсинга и построения автомата...
> Убрать пробелы в начала и конце?
Да знаю я, знаю, что для этого достаточно strip. Но вот если сделать это регуляркой - получаем лагалище с квадратичной сложностью (хотя в том же пёрле всё мгновенно отрабатывает).
З.Ы. Или тебе не нравится буква a вместо пробела? Как нахуй разница то? Или тебе не нравится, что я левую половину регулярки отбросил, чтобы не переусложнять пример (один хуй лагает)?
3_14dar 24.07.2016 22:14 # −2
В том что это можно сделать за один раз? Причем тут компиляция, она ленивая.
>Но вот если сделать это регуляркой - получаем лагалище с квадратичной сложностью
Не, ну если еще черезжопнее сделать, то можно еще и экспоненту получить, а так re.sub(r"^[\s\u200c]+", "", str) + re.sub(r"[\s\u200c]+$", "", str)
Ты лагаешь прост.
bormand 24.07.2016 22:36 # 0
Так эта хуйня и лагает: До тебя никак не дойдёт?
3_14dar 24.07.2016 22:54 # 0
re.sub("[\s\u200c]+$", "", " " + 'aaa' + ' '*20000)
Тут ничего не лагает.
kipar 24.07.2016 23:05 # 0
re.sub("[\s\u200c]+$", "", " " + 'aaa' + ' '*20000+'a')
bormand 24.07.2016 23:15 # +2
А если перевернуть - лагает:
Odin 03.11.2018 17:18 # 0
Когда я лагал?
Dummy00001 24.07.2016 19:02 # +1
3_14dar 24.07.2016 19:26 # −4
3_14dar 24.07.2016 21:45 # −2
3_14dar 24.07.2016 23:02 # 0
А не, нихуя. То бекреференс http://stackoverflow.com/questions/9011592/in-regular-expressions-what-is-a-backtracking-back-referencing
bormand 24.07.2016 23:19 # 0
Не было бы бектрекинга, лагало бы оно так на жалких 20к символов?
3_14dar 24.07.2016 23:35 # 0
3_14dar 24.07.2016 23:07 # 0
kipar 24.07.2016 23:15 # +1
3_14dar 24.07.2016 23:34 # 0
hormand 02.08.2022 21:57 # 0
bormanb 02.08.2022 23:12 # 0
3_14dar 24.07.2016 23:47 # 0
Soul_re@ver 24.07.2016 23:17 # +1
А в данном случае — хреновый оптимизатор.
3_14dar 24.07.2016 23:35 # 0
Конечный автомат же, блжад!
>хреновый оптимизатор
Его просто нет.
guestinho 25.07.2016 16:51 # 0
Конечный автомат же, блжад!
>хреновый оптимизатор
хреновый улучшатель же, блжад!
guesto 25.07.2016 17:45 # +1
1024-- 25.07.2016 19:12 # +1
bormand 25.07.2016 19:22 # +6
3_14dar 25.07.2016 22:50 # 0
3_14dar 24.07.2016 23:38 # 0
bormand 24.07.2016 23:45 # +1
3_14dar 25.07.2016 00:27 # 0
3_14dar 25.07.2016 01:33 # 0
Оно?
Dummy00001 25.07.2016 13:37 # +2
3_14dar 25.07.2016 22:35 # 0
Invalid_typecast 25.07.2016 22:36 # +1
Dummy00001 25.07.2016 22:52 # 0
в перле - регулярки часть синтаксиса языка, и структура регулярки (еще за долго до её компиляции) известна на стадии парсинга скрипта. на основе структуры можно уже и делать высокоуровневые оптимизации.
pcre тоже оптимизирует, и принижать то что народ там делает не стоит. но у перла все равно оптимизируется больше и глубже по простой причине - нужда. в языке функций для работы со строками просто кот наплакал. по дезайну все нужно делать регулярками. найти подстроку, вырезать подстроку, вставить подстроку, распарсить строку (sscanf/etc) - почти всегда приходится делать через регулярки, потому что альтернативы плачевны.
3_14dar 26.07.2016 02:20 # 0
С какого перепоя? Брать регексп из переменной перл не умеет что ли?
Никто ничего не принижает, просто питон ищет тщательнее, значит, это должно что-то приносить, иначе бы это выпилили к хуям собачим или запилили бы альтернативный модуль.
Dummy00001 26.07.2016 02:35 # 0
и из переменных он тоже умеет. но перл так же поддерживает интерполяцию переменных - включая qr// переменные - и подмешивание перлового кода в регулярках. что бы это сделать, приходится регулярки парсить вместе с остальным кодом.
3_14dar 26.07.2016 03:04 # 0
KOTuK 02.08.2022 20:27 # 0
Подо мной уже лужа. Это всё, что я смог.
3_14dar 24.07.2016 23:40 # 0
gost 25.07.2016 14:38 # 0
Если у тебя в коде их слишком много для тестирования каждой - это очень серьёзный повод задуматься.
guestinho 25.07.2016 16:51 # 0
regexpbuddy тебе в опмощь
3_14dar 25.07.2016 22:43 # 0
guesto 26.07.2016 05:24 # 0
Он автомат тирассирует
Скачай да попробуй
3_14dar 26.07.2016 05:36 # 0
bormand 25.07.2016 21:20 # 0
3_14dar 25.07.2016 22:42 # 0
CRITICAL_ERROR 25.07.2016 22:43 # +1
bormand 26.07.2016 17:15 # 0
3_14dar 26.07.2016 17:52 # 0
/0.
В студии можно померять интервал между двумя бряками (останавливаться на бряках естественно не надо)?
bormand 26.07.2016 18:03 # 0
3_14dar 26.07.2016 18:23 # 0
bormand 26.07.2016 18:26 # 0
Так что если пробежаться несколько раз (пример же у нас есть, можем сколько угодно его гонять) с run to cursor, вполне можно прикинуть, в каком районе лаг.
3_14dar 26.07.2016 22:02 # 0
Но аналогов в путхоне имхо нет, да и гонять задолбешься. Разве что двоичным поиском.
bormand 26.07.2016 22:09 # 0
> Разве что двоичным поиском.
Ну я примерно так и искал лаг в нашем проекте. Довольно быстро нашлось. Так что вполне юзабельное время там показано.
3_14dar 26.07.2016 22:13 # 0
bormand 26.07.2016 22:15 # 0
guestinho 26.07.2016 23:13 # 0
кстати, профайлеры есть и для пист0на, зачаточные
TEPAnEBT 26.07.2016 23:13 # −1
Segmentation_Fault 28.07.2016 16:09 # 0
3_14dar 28.07.2016 17:50 # 0
guestinho 28.07.2016 17:51 # +1
Segmentation_Fault 29.07.2016 15:41 # +1
3_14dar 25.07.2016 22:41 # 0
TEPAnEBT 26.07.2016 23:13 # −1
TEPAnEBT 26.07.2016 23:13 # −1
TEPAnEBT 26.07.2016 23:14 # −1
TEPAnEBT 26.07.2016 23:16 # −1
TEPAnEBT 26.07.2016 23:17 # −1
TEPAnEBT 26.07.2016 23:18 # −1
1024-- 27.07.2016 16:21 # 0
Жирный вариант, правда, не очень.