我正在寻找一个匹配某些内容(包含重复内容)的正则表达式,但前提是它前面没有等号字符(=),并且只有在它后面没有&符号(&)时才会出现。
例如,假设要匹配的内容由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...
但它排除=CONTENT&
并不起作用,可能是因为正则表达式引擎只是移过前导=
然后满足前瞻。
我考虑在CONTENT
之后做一个负面的背后隐藏,但由于CONTENT包含重复,所以不可能(看后面必须有固定的长度模式)。
答案 0 :(得分:0)
据我了解,您尝试匹配Content
前面有=
或&
成功但不是同时时间。强>
您可以使用更改来实现,如下所示。
正则表达式: ^=?[^=&]+$|^[^=&]+&?$
<强>解释强>
^=?[^=&]+$
会查找可选的=
,后跟除=
和&
以外的多个字符。
^[^=&]+&?$
会查找=
和&
以外的多个字符,后跟可选的&
。
|
是强制与任何声明的模式匹配的变更。
的 Regex101 Demo 强>