Come estrarre la stringa da "("
e ")"
utilizzando la corrispondenza del modello o altro. Per esempio, se il testo è `Schema per estrarre il testo tra parentesi
"Ciao (Java)"
Poi come ottenere solo "Java"
.
Grazie.
Come estrarre la stringa da "("
e ")"
utilizzando la corrispondenza del modello o altro. Per esempio, se il testo è `Schema per estrarre il testo tra parentesi
"Ciao (Java)"
Poi come ottenere solo "Java"
.
Grazie.
Prova questo:
String x= "Hello (Java)";
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while(m.find()) {
System.out.println(m.group(1));
}
o
String str = "Hello (Java)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
@rupinderjeet Tu ed i due ragazzi che danno +1 dovresti controllare la data e l'ora in cui sono state fornite le risposte prima di scrivere/supportare tali commenti. – aProgger
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);
}
USCITA
Java
.NET
Che cosa significa \\((.+?)\\)
?
Questo modello di espressione regolare partirà dalla \\(
che corrisponderà (
quanto essa è riservata a RegExp così abbiamo bisogno di sfuggire a questo personaggio, stessa cosa per \\)
e (.*?)
corrisponderà qualsiasi carattere zero o più tempo nulla di più in ()
considerati come gruppo che stiamo trovando
come ottenere stringhe nell'espressione ["1", "5", "7"]. Il risultato dovrebbe essere "1", "5" e "7". Dovremmo usare come: 'Pattern regex = Pattern.compile (" \\ [(. *?) \\] ");' – user1182217
@ user1182217 Puoi usare 'Pattern regex = Pattern.compile (" (\ ". *? \ ")"); 'e usa il matcher per recuperare grop 1. –
sul voto per la spiegazione (y) – vicky
So che questo è stato chiesto 3 anni fa, ma per tutti coloro che con la stessa domanda/simile che atterra qui (come ho fatto io), c'è qualcosa di ancora più semplice rispetto all'utilizzo di espressioni regolari:
String result = StringUtils.substringBetween(str, "(", ")");
Nel tuo esempio , result
verrebbe restituito come "Java". Raccomanderei la libreria StringUtils per vari tipi di manipolazione di stringa (relativamente semplice); gestisce le cose come input nulli automaticamente, il che può essere conveniente.
documentazione per 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-
Esistono altre due versioni di questa funzione, a seconda che i delimitatori di apertura e chiusura sono uguali, e se il delimitatore (s) verificano (s) in target string più volte.
Inizialmente proponendo 'indexOf': http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf%28int%29 – PeterMmm
Che cosa hai provato fino ad ora? Che cosa vuoi che succeda con parentesi annidate, ad es. "Ciao (Foo e (Bar))"? Che dire delle situazioni con più valori di parentesi, come "Hello (Foo) e (Bar)"? –