Соответствие регулярному выражению до первого появления строки - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь найти соответствие, начиная с @Path("/v11/data") до следующего @GET.

Это файл, и я использую это выражение \/v11\/data(\s?.*)+, но оно становится жадным и не останавливается на первое совпадение @ GET.

Когда я использую это выражение \/v11\/data(\s?.*)+\@GET. Пожалуйста, помогите

DEMO LINK: https://regex101.com/r/BDsUvM/3

public class TestResource {
private final TestResource testResource;

public TestResource(TestResource testResource) {
    this.testResource = testResource;
}

@GET
@Path("/v11/data")
@Resource[enter(asdf)
public void getTest(@PathParam("asdf") @asdf String asdf,
                           @PathParam("dfg") dgf dgf,
                           @NotNull @SS ss sess) {

    testResource.getTest();
}

@GET
@Path("/v45/data")
public void getData(@PathParam("asdf") @asdf String asdf,
                           @PathParam("ewr") erw ewr,
                           @NotNull @ss ss ss) {

    testResource.getData();
}

@GET
@Path("/v45/data")
public void getData(@PathParam("asdf") @asdf String asdf,
                           @PathParam("ewr") erw ewr,
                           @NotNull @ss ss ss) {

    testResource.getData();
}

1 Ответ

2 голосов
/ 29 марта 2020

Вы можете сопоставить, начиная с @Path, и сопоставить все последующие строки, которые не начинаются с @GET, используя отрицательный прогноз в повторяющейся группе.

@Path\("\/v11\/data.*(?:\r?\n(?!@GET).*)*

Regex demo

Если должен быть @GET, вы можете использовать группу захвата

@Path\("\/v11\/data.*((?:\r?\n(?!@GET).*)*)\r?\n\s*@GET

Regex demo

Редактировать

Или более короткая и удобочитаемая версия, предложенная @ anubhava

Path\("/v11/data"\)\s+((?:.*\R)+?)@GET

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...