【发布时间】:2021-12-02 02:50:46
【问题描述】:
我想多行匹配下面的模式
- 模式以“PAT_A”开头
- 模式以第一个“;”结尾在“PAT_A”之后
- 模式在“PAT_A”和“;”之间包含“PAT_B”
- 模式在“PAT_A”和“;”之间不包含“NOT_MATCH_THIS”
例如,这应该匹配
PAT_A_YYY(
OK,
PAT_B
);
这不应该匹配。
PAT_A_XXX(
NOT_MATCH_THIS,
PAT_B
);
我设法满足了前三个要求
(PAT_A[^;]*?)(\bPAT_B\b)([^;]*;)
这些组用于提取匹配的不同部分。
但是,我没有成功排除包含“NOT_MATCH_THIS”的匹配项。
我查看了关于负前瞻的帖子“How to negate specific word in regex?”。但是,那里的答案似乎与整行匹配,而不是上述模式要求。而且我不确定如何将负前瞻纳入我的正则表达式模式。
我有什么方法可以匹配满足所有四个要求的正则表达式?
【问题讨论】:
标签: regex regex-negation multiline