有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我想把标签和某个目标匹配起来

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

BEGIN11119991112AAdFSfENDBEGINASSD12UHYEND

我试过了

我想它需要提前检查目标是否在结束标记之前到达


共 (3) 个答案

  1. # 1 楼答案

    两全其美

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

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

  2. # 2 楼答案

    你可以试试这个:

    BEGIN(.*999.*?)END
    

    匹配后,你就可以单独得到这个数字

    如果你不想匹配,那么:

    BEGIN.*999.*?END
    

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

    DEMO

  3. # 3 楼答案

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

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

    RegEx Demo