Je veux rechercher un modèle de chaîne donné dans une piqûre d'entrée.
Par exemple.
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}"
Maintenant, je dois rechercher si l'URL de la chaîne contient "/{item}/
". Aidez-moi, s'il vous plaît.
Ceci est un exemple. En fait, j'ai besoin de vérifier si l'URL contient une chaîne correspondant à "/ {a-zA-Z0-9} /"
Vous pouvez utiliser la classe Pattern
pour cela. Si vous souhaitez faire correspondre uniquement les caractères Word à l'intérieur du {}
vous pouvez alors utiliser l'expression rationnelle suivante. \w
est un raccourci pour [a-zA-Z0-9_]
. Si vous êtes d'accord avec _
puis utilisez \w
ou bien utilisez [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");
}
C'est juste une question de String.contains
:
if (input.contains("{item}"))
Si vous avez besoin de savoir où cela se produit, vous pouvez utiliser indexOf
:
int index = input.indexOf("{item}");
if (index != -1) // -1 means "not found"
{
...
}
C'est bien pour faire correspondre les chaînes exactes - si vous avez besoin de vrais modèles (par exemple "trois chiffres suivis d'au plus 2 lettres AC"), alors vous devriez regarder expressions régulières .
EDIT: D'accord, il semble que vous voulez des expressions régulières. Vous voudrez peut-être quelque chose comme ça:
private static final Pattern URL_PATTERN =
Pattern.compile("/\\{[a-zA-Z0-9]+\\}/");
...
if (URL_PATTERN.matches(input).find())
Si vous souhaitez vérifier si une chaîne est présente dans une autre chaîne, utilisez quelque chose comme String.contains
Si vous voulez vérifier si certains modèle est présent dans une chaîne, ajoutez et ajoutez le motif avec '. *'. Le résultat acceptera les chaînes contenant le modèle.
Exemple: supposons que vous ayez une expression régulière a(b|c) qui vérifie si une chaîne correspond à ab
ou ac
.*(a(b|c)).*
vérifiera si une chaîne contient un ab
ou ac
.
Un inconvénient de cette méthode est qu'elle ne vous donnera pas l'emplacement du match.
Vous pouvez le faire en utilisant string.indexOf("{item}")
. Si le résultat est supérieur à -1 {item}
est dans la chaîne