texto - Coincidencia de patrones de cadena en Java
string en java (4)
Quiero buscar un patrón de cadena dado en una cadena de entrada.
Por ej.
String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}"
Ahora necesito buscar si la cadena URL contiene " /{item}/
". Por favor, ayúdame.
Esto es un ejemplo. En realidad, lo que necesito es verificar si la URL contiene una cadena que coincida con "/ {a-zA-Z0-9} /"
Eso es sólo una cuestión de String.contains
. String.contains
:
if (input.contains("{item}"))
Si necesita saber dónde ocurre, puede usar indexOf
:
int index = input.indexOf("{item}");
if (index != -1) // -1 means "not found"
{
...
}
Eso está bien para hacer coincidir las cadenas exactas : si necesita patrones reales (por ejemplo, "tres dígitos seguidos por un máximo de 2 letras AC"), entonces debería buscar expresiones regulares .
EDIT: Está bien, suena como si quieres expresiones regulares. Es posible que desee algo como esto:
private static final Pattern URL_PATTERN =
Pattern.compile("///{[a-zA-Z0-9]+//}/");
...
if (URL_PATTERN.matches(input).find())
Puede hacerlo usando string.indexOf("{item}")
. Si el resultado es mayor que -1 {item}
está en la cadena
Puedes usar la clase de Pattern
para esto. Si desea hacer coincidir solo los caracteres de las palabras dentro de {}
, puede usar la siguiente expresión regular. /w
es una abreviatura de [a-zA-Z0-9_]
. Si está de acuerdo con _
, use /w
o, si no, use [a-zA-Z0-9]
.
String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}";
Pattern pattern = Pattern.compile("///{//w+//}/");
Matcher matcher = pattern.matcher(URL);
if (matcher.find()) {
System.out.println(matcher.group(0)); //prints /{item}/
} else {
System.out.println("Match not found");
}
Si desea comprobar si alguna cadena está presente en otra cadena, use algo como String.contains
Si desea verificar si algún patrón está presente en una cadena, agregue y anteponga el patrón con ''. *''. El resultado aceptará cadenas que contengan el patrón.
Ejemplo: Supongamos que tiene alguna expresión regular a (b | c) que verifica si una cadena coincide con ab
o ac
.*(a(b|c)).*
comprobará si una cadena contiene un ab
o ac
.
Una desventaja de este método es que no le dará la ubicación del partido.