我需要一个正面的正则表达式,它结合了以下所有3个:
-- ^(.*)\.abc\.(.*)$
-- ^(.*)\.abc$
-- ^abc\.(.*)$
以下情况不适用于正则表达式:
-- 123abc
-- .abc123
-- 123abc.
以下是积极的结果:
--.abc
--.abc.
--abc.
我知道3个条件可以在组中进行OR运算。我正在寻找一个更好的solutoin,可能使用前瞻。
我尝试使用反向引用:/^.*([\.]*)abc\1.*$/
但是这对于否定案例也是正面的。
答案 0 :(得分:2)
您可以使用此正则表达式:
^
RegEx分手:
(.*([.;]))?
:开始abc
:以点或分号后面的任何内容开头(可选匹配)。请注意,我们在捕获组#2 abc
之前捕获
abc
:匹配((?=[.;])\2.*)?
abc
:我们在\2
之前捕获的相同字符以及随后的任何内容(可选匹配)结束。 Lookahead断言用于确保我们不匹配空的后向引用$