Comment extraire une chaîne de "("
et ")"
en utilisant la correspondance de motifs ou quoi que ce soit. Par exemple, si le texte est `
"Bonjour (Java)"
Alors comment obtenir seulement "Java"
.
Merci.
Essaye ça:
String x= "Hello (Java)";
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while(m.find()) {
System.out.println(m.group(1));
}
ou
String str = "Hello (Java)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\((.*?)\\)");
Matcher regexMatcher = regex.matcher("Hello This is (Java) Not (.NET)");
while (regexMatcher.find()) {//Finds Matching Pattern in String
matchList.add(regexMatcher.group(1));//Fetching Group from String
}
for(String str:matchList) {
System.out.println(str);
}
SORTIE
Java
.NET
Que signifie \\((.+?)\\)
?
Ce modèle d'expression régulier commencera à partir de \\(
Qui correspondra à (
Tel qu'il est réservé dans regExp, nous devons donc échapper ce caractère, même chose pour \\)
Et (.*?)
correspondra à n'importe quel caractère zéro ou plus de temps n'importe quoi de plus dans ()
considéré comme groupe que nous trouvons.
Je sais que cela a été posé il y a 3 ans, mais pour quiconque ayant la même question/similaire qui atterrit ici (comme je l'ai fait), il y a quelque chose de plus simple que d'utiliser l'expression régulière:
String result = StringUtils.substringBetween(str, "(", ")");
Dans votre exemple, result
serait retourné comme "Java". Je recommanderais la bibliothèque StringUtils pour différents types de manipulation de chaîne (relativement simple); il gère automatiquement des choses comme les entrées nulles, ce qui peut être pratique.
Documentation pour substringBetween (): https://commons.Apache.org/proper/commons-lang/apidocs/org/Apache/commons/lang3/StringUtils.html#substringBetween-Java.lang.String-Java. lang.String-Java.lang.String -
Il existe deux autres versions de cette fonction, selon que les délimiteurs d'ouverture et de fermeture sont identiques et que le ou les délimiteurs se produisent plusieurs fois dans la chaîne cible.