如果正则表达式匹配存在前缀,则忽略它,然后继续匹配

时间:2020-09-10 01:29:52

标签: regex

我想匹配集合[A-Z]的前1到3个字符,但是我想忽略前缀XYZ_

示例:

  • XYZ_ ABC 1234
  • XYZ_ DEF 1234
  • DEF 0000A0
  • D 00A0
  • BCD A1
  • CDE

我正在尝试使用^(?!XYZ_)?[A-Z]{1,3}形式的否定超前。但是,这将从前两个示例返回“ XYZ”(在其他示例中工作正常)。即其输出是:

  • XYZ _ABC1234
  • XYZ _DEF1234
  • DEF 0000A0
  • D 00A0
  • BCD A1
  • CDE

我该如何忽略字符串中的前缀(如果存在),并根据我要查找的条件进行匹配?

1 个答案:

答案 0 :(得分:0)

事实证明,这是特定于re模块的Python。

我使用\K达到了预期的结果,它重置了所报告比赛的起点。

因此,如果使用Perl兼容的正则表达式(PCRE),答案是:^(?:XYZ_\K)?[A-Z]{1,3}

More can be read here