Cómo extraer una palabra en java después de una palabra dada al usar regex en java

Estoy tratando de extraer una palabra después de una palabra dada. por ejemplo: si mi cadena es " http: // localhost: 8080 / api / rest / loan / application / 1007 / solicitante / 951 / pan ", entonces quiero extraer la palabra que viene después application(suponga que la aplicación viene solo una vez en la cuerda).

En este caso quiero extraer 1007. Por ahora lo he intentado usando Java

(.*?^)(.*?)application/[0-9]*.

Esto me está dando salida como http://localhost:8080/api/rest/loan/application/1007. Pero solo quiero 1007 como mi salida.

Respuesta 1

Puede usar la mirada positiva hacia atrás para asegurarse de que el texto coincidente esté precedido por el application/uso de esta expresión regular,

(?<=application/)[^/]+

Aquí, [^/]+parte capturará cualquier texto excepto /, dándole el texto deseado.1007

Regex Demo

Código Java,

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("(?<=application/)[^/]+");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group());
}

Huellas dactilares,

1007

Otra forma más fácil y más eficaz de hacer la misma tarea sería usar el siguiente patrón de agrupación,

/application/([^/]+)

y capturar los contenidos del grupo1.

Regex Demo con patrón de agrupación

Tenga en cuenta que esto es mucho más rápido y funcionará en general, ya que a veces los dialectos no admiten mirar alrededor.

Código Java,

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("/application/([^/]+)");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
}

Huellas dactilares,

1007 
Respuesta: 2

Estoy desarrollando una aplicación C # para ejecutar pruebas JUnit automáticamente. Como es complicado mover la ubicación actual donde se ejecuta mi aplicación C #, necesito ejecutar las pruebas JUnit sin ...

Al usar el operador ternario, es muy conveniente escribir código como String name = employee.getName ()! = Null? employee.getName (): ""; que (la mayoría de las veces) un código más eficiente como String ...

Bien, déjame ver si puedo explicarte. Tengo un código que envuelve un iterador Java (de Hadoop, como sucede) en un flujo de Scala, para que potencialmente pueda leerse más de una vez, por código de cliente que yo ...

Tengo un método java escrito usando expresiones lambda donde necesito agregar más condiciones, y se me prohibió usar if y elses clásico. Este es mi código actual que comprueba si getInstrument ...