Там должен так или иначе убедить getopt Python обработать дополнительные параметры к опциям?

Нет никакой замены 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]*';

Это похоже на Вашу версию с ПОДОБНЫМ, но соответствует более точно. Оба будут работать одинаково плохо, нуждаясь в полном сканировании таблицы без индексов.

6
задан lesmana 23 March 2014 в 21:07
поделиться

3 ответа

getopt не поддерживает дополнительные параметры. в случае длинного варианта вы можете сделать:

$ ./testopt.py --verbose=

, что приведет к значению пустой строки.

Вы можете найти модуль argparse для большей гибкости.

9
ответ дан 8 December 2019 в 14:44
поделиться

К сожалению, это невозможно. Из optparse docs :

Как правило, данная опция либо принимает аргумент, либо нет. Многим людям нужна функция «необязательных аргументов опций», означающая, что некоторые опции будут принимать аргумент, если они его видят, и не будут, если нет. Это несколько спорный, потому что она делает разбор неоднозначны: если «-a» принимает необязательный аргумент и «-b» это еще один вариант полностью, как мы интерпретируем «-ab»? Из-за этой двусмысленности optparse не поддерживает эту функцию.

РЕДАКТИРОВАТЬ: ой, то есть для модуля optparse, а не для модуля getopt, но причины, по которым ни один модуль не имеет «необязательных аргументов», одинаковы для обоих .

5
ответ дан 8 December 2019 в 14:44
поделиться

Если вы используете версию 2.3 или новее, вы можете вместо этого попробовать модуль optparse , поскольку он «более удобный, гибкий и мощный ... ", а также новее. Увы, как ответил Пинт, получить именно то, что вы хотите, не представляется возможным.

0
ответ дан 8 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: