正则表达式:匹配表达式除外

时间:2017-11-22 09:14:22

标签: regex

我正在尝试编写一个匹配条件的正则表达式,除非它出现在特定文本时。我使用的签名如下:

(?:(?:\%3D)|(?:=))[^\n]*(?:(?:\%27)|(?:\')|(?:\-\-)|(?:\%3B)|(?:;))

首先查找=符号或其十六进制等效值(%3D)。然后它允许零个或多个非换行符,然后检查单引号,双破折号或分号。

我希望这个签名能够匹配所有内容,除非我得到一个特定的TEXT,例如:

=TEXT;

我怎样才能得到它?

1 个答案:

答案 0 :(得分:0)

您可以使用

(?:%3D|=)(?!TEXT(?:%27|'|--|%3B|;)).*?(?:%27|'|--|%3B|;)

请参阅regex demo

<强>详情

  • (?:%3D|=) - %3D=
  • (?!TEXT(?:%27|'|--|%3B|;)) - TEXT%27'--或{{1}后面不能%3B }}
  • ; - 除了换行符之外的任何0 +字符,尽可能少
  • .*? - (?:%27|'|--|%3B|;)%27'--%3B