Я работаю с некоторыми сборками и должен написать регулярное выражение , чтобы включить некоторые ветви, но исключить другие (чтобы создать сборки).Как совместить ветви с отрицательным и позитивным регулярным выражением?
Лучшего, что я мог придумать это регулярное выражение, которое использует положительный и отрицательный предпросмотр, чтобы соответствовать названиям филиалов:
(?=.*12\.3)^((?!(version-12\.3)).)*$
Вот название ветви и , как они должны быть согласованы:
bugfix-ISSUE-123-some-details-version-12.3
ISSUE-1234-some-other-details-version-12.3
bugfix-12.3
bugfix2-12.3
12.3stuff
stu12.3ff
// match everything above, but don't match anything from below
master
version-12.3
version-3.21
some-other-branch
bugfix-3.21
test
Пожалуйста, используйте this online tool (это только один я обнаружил, что поддерживает отрицательное и положительное опережения регулярного выражения es).
Сейчас регулярное выражение я придумал работает отлично, за исключением следующих 2-х ветвей:
bugfix-ISSUE-123-some-details-version-12.3
ISSUE-1234-some-other-details-version-12.3
Причиной они не включены, потому что я использовал это негативное опережение регулярного выражение, которое исключает version-12.3
(что я хочу), но и исключает все остальное, что включает в себя эту строку (как ISSUE-123-version-12.3
, которую я хочу включены, но это не так):
((?!(version-12\.3)).)*$
Поможешь, пожалуйста?
Хм, попробуйте ['^ (?! Version- \ d.). * 12 \ .3. * $'] (Https://regex101.com/r/tSMZJu/1). Если 'version-' запрещен как целая строка *, используйте '(?! Version - [\ d.] + $)' Вместо '(?! Version- \ d.)'. –
Игорь, это работает? –
@ WiktorStribiżew, да, пожалуйста, отправьте ответ, чтобы я мог проголосовать и принять его! Большое спасибо :) –