Я задал вопрос Matching if all of BCD..n exist after last occurrence of A, вчера, что привело к быстрому и точному ответу (см. regex demo) , Я думал, что могу сделать эту следующую часть самостоятельно, но мне трудно вставить шаблон в конструкторы с перспективой для имитации If-Then-Else Conditional, которые механизм Java regex не поддерживает. Вот обновленная постановка задачи:Если существует A, то соответствует всем BCD..n после последнего вхождения A, иначе любой из BCD..n
- IF «mID00231» существует в исходной строке
- ТОГДА для последнего вхождения «mID00231» в строке, один или несколько вхождений из каждого из {mID00054, mID00013, mID00008, mID00065} должен следовать за ним (в любой заказ),
- ИНАЧЕ
- один или более вхождения любого из {mID00054, mID00013, mID00008, mID00065} должно произойти.
строка источник Matching будет выглядеть как эти:
mID00231mID00008mID00054mID00013mID00065
mID00231mID00008mID00231mID00054mID00013mID00008mID00065
mID00054mID00065mID00008
Пример не матча из-за отсутствующими "mID00065":
mID00231mID00054mID00013mID00008
Пример не матча из-за последнее вхождение из «mID00231» не следует «mID00054» и «mID00008»:
mID00231mID00013mID00065mID00054mID00008mID00231mID00013mID00065
Я попытался поставить решение, представленное в regex demo, в «(THEN (? = IF)) | (ELSE (?! IF))« конструкцию с открытым исходным кодом, но до сих пор безумно безуспешно. Любая помощь приветствуется.
Используйте два отдельных тестов регулярных выражений? –