Здесь нет проблемы с остановкой. Все, что вам нужно, это вычислить, если пересечение ^xy1\d
и [^\d]\d2$
в непустое.
Я не могу дать вам алгоритм здесь, но вот два обсуждения метода для создания пересечения, не прибегая к построению DFA:
И тогда есть RAGEL
, который также может вычислять пересечение регулярных выражений.
UPDATE : Я только что пробовал Ragel с регулярным выражением OP. Ragel может генерировать «dot» файл для graphviz из конечного конечного автомата, что потрясающе. Пересечение регулярного выражения OP выглядит так в синтаксисе Ragel:
('xy1' digit any*) & (any* ^digit digit '2')
и имеет следующий автомат:
В то время как пустое пересечение:
('xy1' digit any*) & ('q' any* ^digit digit '2')
выглядит так:
Так что если все остальное не работает , вы все равно можете вычислить Ragel пересечение и проверить, выводит ли он пустую машину состояний, сравнивая сгенерированный «точечный» файл.
Check android.os.Build.VERSION
.
CODENAME
: Текущее кодовое имя разработки, или строка "REL", если это сборка релиза.INCREMENTAL
: Внутреннее значение, используемое базовым элементом управления исходным кодом для представления этой сборки.RELEASE
: Видимая пользователю строка версии.