如果标签包含目标,则标签之间的正则表达式匹配
Regex match between tags if they contain a target
我有一个字符串,它有标签 BEGIN
和 END
,它们包含任何数字或字母 A-Z 0-9
,没有空格。
我想将标签与某个目标匹配。
例如,给定 String
BEGIN11119991112AADFSFENDBEGINASSD12UHYEND
和目标 999
这将匹配
BEGIN11119991112AAdFSfEND
并且 不是 BEGINASSD12UHYEND
我试过了BEGIN.*999.*END
我假设它需要先行检查以检查目标是否在结束标记之前。
您可以使用这个正则表达式:
BEGIN(?:(?!BEGIN).)*999(?:(?!BEGIN).)*END
你可以试试这个:
BEGIN(.*999.*?)END
匹配后,您就可以单独获得该号码。
如果你不想匹配那么:
BEGIN.*999.*?END
您几乎是正确的,只需添加 ?
。
两全其美
BEGIN((?:(?!BEGIN).)*999.*?)END
匹配 BEGIN
后跟并捕获以下组:此非捕获组中的零个或多个:不匹配 BEGIN
的任何字符;后跟 999
后跟任何字符的零个或多个,直到 END
.
的第一个匹配项(但不包括)
我有一个字符串,它有标签 BEGIN
和 END
,它们包含任何数字或字母 A-Z 0-9
,没有空格。
我想将标签与某个目标匹配。
例如,给定 String
BEGIN11119991112AADFSFENDBEGINASSD12UHYEND
和目标 999
这将匹配
BEGIN11119991112AAdFSfEND
并且 不是 BEGINASSD12UHYEND
我试过了BEGIN.*999.*END
我假设它需要先行检查以检查目标是否在结束标记之前。
您可以使用这个正则表达式:
BEGIN(?:(?!BEGIN).)*999(?:(?!BEGIN).)*END
你可以试试这个:
BEGIN(.*999.*?)END
匹配后,您就可以单独获得该号码。
如果你不想匹配那么:
BEGIN.*999.*?END
您几乎是正确的,只需添加 ?
。
两全其美
BEGIN((?:(?!BEGIN).)*999.*?)END
匹配 BEGIN
后跟并捕获以下组:此非捕获组中的零个或多个:不匹配 BEGIN
的任何字符;后跟 999
后跟任何字符的零个或多个,直到 END
.