1

我正在寻找一个匹配某些内容(包含重复)的正则表达式,但前提是它前面没有等号字符(=)并且只有它后面没有和号字符(&)。

例如,假设要匹配的内容由CONTENT. 我认为这个问题并不重要,只是匹配的内容很长,因此我无法在我正在使用的应用程序中复制所有内容。 CONTENT可以出现在 blob 中的任何位置,而且它也可能是唯一的。

CONTENT         // OK, should match
fooCONTENT      // OK, should match
CONTENTfoo      // OK, should match
fooCONTENTfoo   // OK, should match
=CONTENT        // OK, should match
CONTENT&        // OK, should match
=CONTENT&       // NO - SHOULD NOT MATCH

我尝试了这样的模式:

(?!=CONTENT&)CONTENT...

但它不起作用 exclude =CONTENT&,可能是因为正则表达式引擎只是简单地移过前导=然后满足了前瞻。

我考虑过在后面做一个负面的后视CONTENT,但由于 CONTENT 包含重复,这是不可能的(后视必须有一个固定长度的模式)。

4

1 回答 1

0

据我了解,您正在尝试匹配Content 任何一个之前的=OR,&不能同时匹配两者。

您可以通过使用更改来实现它,如下所示。

正则表达式: ^=?[^=&]+$|^[^=&]+&?$

解释:

^=?[^=&]+$查找一个可选的,=后跟多个字符,而不是=and &

^[^=&]+&?$查找多个字符,而不是=后跟&可选的&.

|是强制与任一声明模式匹配的更改。

Regex101 Demo

于 2017-04-21T06:05:29.670 回答