如果标签包含目标,则标签之间的正则表达式匹配

Regex match between tags if they contain a target

我有一个字符串,它有标签 BEGINEND,它们包含任何数字或字母 A-Z 0-9,没有空格。

我想将标签与某个目标匹配。

例如,给定 String BEGIN11119991112AADFSFENDBEGINASSD12UHYEND 和目标 999 这将匹配

BEGIN11119991112AAdFSfEND 并且 不是 BEGINASSD12UHYEND

我试过了BEGIN.*999.*END

我假设它需要先行检查以检查目标是否在结束标记之前。

您可以使用这个正则表达式:

BEGIN(?:(?!BEGIN).)*999(?:(?!BEGIN).)*END

RegEx Demo

你可以试试这个:

BEGIN(.*999.*?)END

匹配后,您就可以单独获得该号码。

如果你不想匹配那么:

BEGIN.*999.*?END

您几乎是正确的,只需添加 ?

DEMO

两全其美

BEGIN((?:(?!BEGIN).)*999.*?)END

匹配 BEGIN 后跟并捕获以下组:此非捕获组中的零个或多个:不匹配 BEGIN 的任何字符;后跟 999 后跟任何字符的零个或多个,直到 END.

的第一个匹配项(但不包括)