正则表达式 - 排除字符串中的单词

Regex - exclude word within string

我想匹配此字符串中除“eps1@”之外的所有内容:

HelpMe_pleas3_eps1@

我试过 [^eps1@] 但这匹配了除了“e”“p”“s”“1”“@”的每个实例之外的所有内容。我只想排除“eps1@”。

有很多方法可以实现,具体取决于您的实际需要。

使用 (.*)eps1@ 匹配第一个捕获组中“eps1@”之前的所有内容。参见 demo #1

使用 (.*)eps1@(.*) 匹配第一和第二捕获组中“eps1@”前后的所有内容。参见 demo #2

如果“eps1@”出现多次,您可以使用这个正则表达式:

(?:[^eps1@]|e(?!ps1@)|(?<!e)p(?!s1@)|(?<!ep)s(?!1@)|(?<!eps)1(?!@)|(?<!eps1)@)+

这意味着:

  • [^eps1@] 除“e”、“p”、“s”、“1”和“@”之外的任何字符;或者
  • e(?!ps1@) 字符“e”,如果后面没有跟“ps1@”;或者
  • (?<!e)p(?!s1@) 如果前面没有“e”且后面没有“s1@”,则字符“p”;或者
  • 等等。

demo #3

但是您是否考虑过将“eps1@”替换为源字符串中的“”?

P.S。对于接下来的问题,我建议您更准确地了解您使用的语言。