regex 匹配正则表达式模式中的特定字符串

5fjcxozz  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(152)

我有多个记录,我想匹配特定的字符串,同时不匹配特定的字符串。我想出了一个模式,但它匹配所有。任何人都可以修改模式吗?

Pattern: /PF\s*(?:XAP|FNI)?\s*O\/\s*(?:RG|VO|HS).*\s*\+?(?!HSAC|VOG)/gm

Here are the records-

Here are the records should be matched:
PFO/RGETK
PFO/RGETK+/RGETK
PFO/VOG+/RGETK
PFO/VOG+/VOG
PFO/RGETK+/VOG
PFXAPO/RGETK
PFXAPO/RGETK+/RGETK
PFXAPO/VOG+/RGETK
PFXAPO/VOG+/VOG
PFXAPO/RGETK+/VOG
PFFNIO/RGETK
PFFNIO/RGETK+/RGETK
PFFNIO/VOG+/RGETK
PFFNIO/VOG+/VOG
PFFNIO/RGETK+/VOG
PF O/RGETK+/HSAC
PF O/HSAC+/RGETK
PF O/RG+/RGETK
PF O/RG+/HSAC

Here are the records should NOT be matched:
PFO/VOG
PFO/VOG+/HSAC
PFO/HSAC+/HSAC
PFXAPO/VOG
PFXAPO/VOG+/HSAC
PFXAPO/HSAC+/HSAC
PFFNIO/VOG
PFFNIO/VOG+/HSAC
PFFNIO/HSAC+/HSAC

PF O/ HSAC
PF   XAP  O/HSAC
PFFNI O/      HSAC
vuktfyat

vuktfyat1#

您可以使用

^PF\s*(?:(?:XAP|FNI)\s*)?O\/(?!\s*(?:VOG\+?(?:\/HSAC)?|HSAC\+?\/HSAC)$)\s*(?:RG|VO|HS)[A-Z]*\+?(?:\/[A-Z]+)?$

请参见regex demo

  • 详细信息 *:
  • ^-字符串开始
  • PF-PF
  • \s*-零个或多个空格
  • (?:(?:XAP|FNI)\s*)?-XAPFNI的可选序列,然后是零个或多个空格
  • O\/-O/
  • (?!\s*(?:VOG\+?(?:\/HSAC)?|HSAC\+?\/HSAC)$)
  • \s*-零个或多个空格
  • x1米11英寸1x-x1米12英寸1x、x1米13英寸1x或x1米14英寸1x
  • [A-Z]*-零个或多个大写ASCII字母
  • \+?-可选的+字符
  • (?:\/[A-Z]+)?-/和一个或多个ASCII大写字母的可选序列
  • $-字符串结束。

相关问题