Мне нужно иметь одно положительное регулярное выражение, которое объединяет все 3 из следующих:
-- ^(.*)\.abc\.(.*)$
-- ^(.*)\.abc$
-- ^abc\.(.*)$
так что нижеследующие случаи не применяются к регулярному выражению:
-- 123abc
-- .abc123
-- 123abc.
и следующий fgive положительный результат:
--.abc
--.abc.
--abc.
Я знаю, что 3 условия могут быть в ORed в группе. Я смотрю на лучший solutoin, возможно, используя lookaheads.
Я попытался использовать /^.*([\.]*)abc\1.*$/
: /^.*([\.]*)abc\1.*$/
но тогда это /^.*([\.]*)abc\1.*$/
положительно для отрицательных случаев.
Вы можете использовать это регулярное выражение:
^(.*([.;]))?abc((?=[.;])\2.*)?$
RegEx Breakup:
^
: Начать(.*([.;]))?
: начните с чего-либо, за которым следует точка или точка с запятой (необязательное совпадение). Обратите внимание, что мы захватываем до abc
в группе захвата # 2abc
: совпадение abc
((?=[.;])\2.*)?
. ((?=[.;])\2.*)?
: Конец с тем же символом, который мы зафиксировали перед abc
и любым последующим (необязательное совпадение). Утверждение Lookahead используется, чтобы убедиться, что мы не сопоставляем пустую обратную ссылку \2
$
: Конец
--
частью ввода? Или просто заполнитель?