Мне нужно найти и заменить теги testNG с тестом, а также добавить новую аннотацию «disabledTests» к тому же тесту.Отрицательный lookahead для выражения, который также включен в поиск
Вот набор входных данных:
@Test(groups={"endtoend"}, enabled = false)
@Test(enabled = false, groups={"endtoend"})
@Test(groups = {"integration"}, enabled = false) laksdflas
@Test(groups={"integration","honor"}, enabled = false)
@Test(enabled=false){}
@Test(groups={"integration","honor"}, enabled = true)
@Test(groups={"integration"})
Использование Notepad ++ здесь находка регулярное выражение:
((\(|enabled\s*=\s*false).*(groups\s*=\s*)(\{"|")(.*)("\}|").*(enabled\s*=\s*false|)\)|\(enabled\s*=\s*false\))
Вот заменить регулярное выражение:
\(enabled=true, groups={"disabledtests","\5"}\)
Вот выход с использованием вышеупомянутых поисковых и замещающих регулярных выражений:
@Test(enabled=true, groups={"disabledtests","endtoend"})
@Test(enabled=true, groups={"disabledtests","endtoend"})
@Test(enabled=true, groups={"disabledtests","integration"}) laksdflas
@Test(enabled=true, groups={"disabledtests","integration","honor"})
@Test(enabled=true, groups={"disabledtests",""}){}
@Test(enabled=true, groups={"disabledtests","integration","honor"})
@Test(enabled=true, groups={"disabledtests","integration"})
Необязательная аннотация в пятом примере не является проблемой. Проблема касается последних две строк заменяются:
@Test(groups={"integration","honor"}, enabled = true)
@Test(groups={"integration"})
Обратите внимание на входных данных, установленные эти тесты не имеет «Enabled = ложный» тега. Мне нужно, чтобы мое выражение regex исключало эти случаи, что означает, что эти строки не должны возвращаться в поиске.
Следует ли использовать отрицательные образы для этих случаев? Если да, могу ли я иметь какие-то намеки?
В качестве альтернативы, я открыт, чтобы лучше находить и заменять регулярные выражения, чем то, что я использую.
Вот желаемый результат:
@Test(enabled=true, groups={"disabledtests","endtoend"})
@Test(enabled=true, groups={"disabledtests","endtoend"})
@Test(enabled=true, groups={"disabledtests","integration"}) laksdflas
@Test(enabled=true, groups={"disabledtests","integration","honor"})
@Test(enabled=true, groups={"disabledtests",""}){}
@Test(groups={"integration","honor"}, enabled = true)
@Test(groups={"integration"})
Для обновления вложенных структурированных данных, вы можете рассмотреть вопрос о создании простого синтаксического анализа. В любом случае, можете ли вы изменить свой вопрос, чтобы четко показать текущий вход и какой желаемый результат вы хотите? –
Хорошо, я отредактировал вопрос. – PadawanLearner