Нет никакой замены regexp, только простая строковая ЗАМЕНА ().
MySQL имеет оператор REGEXP, но это - только тестер соответствия не заменитель, таким образом, необходимо было бы вывернуть логику наизнанку:
SELECT * FROM foo WHERE bar REGEXP '[^0-9]*1[^0-9]*2[^0-9]*3[^0-9]*4[^0-9]*5[^0-9]*';
Это похоже на Вашу версию с ПОДОБНЫМ, но соответствует более точно. Оба будут работать одинаково плохо, нуждаясь в полном сканировании таблицы без индексов.
getopt
не поддерживает дополнительные параметры. в случае длинного варианта вы можете сделать:
$ ./testopt.py --verbose=
, что приведет к значению пустой строки.
Вы можете найти модуль argparse
для большей гибкости.
К сожалению, это невозможно. Из optparse docs :
Как правило, данная опция либо принимает аргумент, либо нет. Многим людям нужна функция «необязательных аргументов опций», означающая, что некоторые опции будут принимать аргумент, если они его видят, и не будут, если нет. Это несколько спорный, потому что она делает разбор неоднозначны: если «-a» принимает необязательный аргумент и «-b» это еще один вариант полностью, как мы интерпретируем «-ab»? Из-за этой двусмысленности optparse не поддерживает эту функцию.
РЕДАКТИРОВАТЬ: ой, то есть для модуля optparse, а не для модуля getopt, но причины, по которым ни один модуль не имеет «необязательных аргументов», одинаковы для обоих .
Если вы используете версию 2.3 или новее, вы можете вместо этого попробовать модуль optparse , поскольку он «более удобный, гибкий и мощный ... ", а также новее. Увы, как ответил Пинт, получить именно то, что вы хотите, не представляется возможным.