Проверка параметра пакетного файла с регулярным выражением [duplicate]

Один из способов сделать это - использовать метакласс:

class Property(pyqtProperty):
    def __init__(self, value, name='', type_=None, notify=None):
        if type_ and notify:
            super().__init__(type_, self.getter, self.setter, notify=notify)
        self.value = value
        self.name = name

    def getter(self, inst=None):
        return self.value

    def setter(self, inst=None, value=None):
        self.value = value
        getattr(inst, '_%s_prop_signal_' % self.name).emit(value)

class PropertyMeta(type(QObject)):
    def __new__(mcs, name, bases, attrs):
        for key in list(attrs.keys()):
            attr = attrs[key]
            if not isinstance(attr, Property):
                continue
            value = attr.value
            notifier = pyqtSignal(type(value))
            attrs[key] = Property(
                value, key, type(value), notify=notifier)
            attrs['_%s_prop_signal_' % key] = notifier
        return super().__new__(mcs, name, bases, attrs)

class HelloWorldHtmlApp(QWebEngineView):
    ...
    class Backend(QObject, metaclass=PropertyMeta):
        foo = Property('Hello World')

        @pyqtSlot()
        def debug(self):
            self.foo = 'I modified foo!'
3
задан jgarciabt 19 April 2014 в 12:51
поделиться

1 ответ

Batch / cmd не поддерживает регулярные выражения напрямую. Для этого вы должны использовать findstr, например:

echo %node% | findstr /r "[vV][0-9.]*" >nul 2>&1 && (echo contains) || (echo does not contain) или

echo %node% | findstr /r "[vV][0-9.]*" >nul 2>&1 if errorlevel 1 (echo does not contain) else (echo contains)

Этот трюк делегирует сравнение с findstr и чем использует код возврата (errorlevel) из него. (обратите внимание, что поддержка regexes findstr также весьма ограничена и имеет некоторые причуды, больше информации http://ss64.com/nt/findstr.html )

6
ответ дан wmz 4 September 2018 в 07:06
поделиться
Другие вопросы по тегам:

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