标记之间的正则表达式匹配(如果它们包含目标)

时间:2015-03-20 16:58:14

标签: java regex string string-matching

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

我希望将标记与特定目标匹配。

例如,鉴于String BEGIN11119991112AADFSFENDBEGINASSD12UHYEND和目标999,这将匹配

BEGIN11119991112AAdFSfEND BEGINASSD12UHYEND

我试过BEGIN.*999.*END

我认为需要前瞻来检查目标是否在结束标记之前。

3 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式:

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

RegEx Demo

答案 1 :(得分:2)

你可以试试这个:

BEGIN(.*999.*?)END

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

如果你不想匹配那么:

BEGIN.*999.*?END

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

<强> DEMO

答案 2 :(得分:1)

两全其美

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

匹配BEGIN后跟并捕获以下组:此非捕获组中的零个或多个:任何不匹配BEGIN的字符;然后是999,后跟零个或多个任何字符,直到第一个匹配,但不包括END