2010-08-30 4 views
4

Comment puis-je remplacer la chaîne suivante en Java:Remplacer la chaîne en excluant certaines chaînes en Java

Sports videos (From 2002 To 2003) here. 

À

Sports videos 2002 2003 here. 

je utiliser le code mais il supprimer toute la chaîne à savoir
Je reçois cette sortie: Sports videos here.

String pattern= "\\((From)(?:\\s*\\d*\\s*)(To)(?:\\s*\\d*\\s*)\\)"; 

String testStr = "Sports videos (From 2002 To 2003) here."; 

String testStrAfterRegex = testStr.replaceFirst(pattern, ""); 

Qu'est-ce qui manque ici?

Merci

STRING DIFFÉRENTE DATE FORMATTER

Si la chaîne ci-dessus a la date formatter comme (\\) ou tout autre caractère/mots puis chiffres, la réponse ne fonctionnera pas

Je remplacerai réponse originale avec ce modèle et cela fonctionnera

String pattern= "\\((From)(.*)(To)(.*)\\)"; 

Répondre

3

Modification

String pattern= "\\((From)(\\s*\\d*\\s*)(To)(\\s*\\d*\\s*)\\)"; 
    String testStr = "Sports videos (From 2002 To 2003) here."; 
    String testStrAfterRegex = testStr.replaceFirst(pattern, "$2 $4"); 

Il y a deux problèmes:

Première

Vous mettez (?:) en groupe avec les années. Ceci est utilisé pour ne pas se souvenir de ces groupes.

Deuxième

Vous n'utilisez pas des identifiants de groupe, comme 1 $, 2 $. J'ai réparé en utilisant 2 $ et 4 $ pour les 2e et 4e groupes.


EDIT

solution propre:

String pattern= "\\(From(\\s*\\d*\\s*)To(\\s*\\d*\\s*)\\)"; 
    String testStr = "Sports videos (From 2002 To 2003) here."; 
    String testStrAfterRegex = testStr.replaceFirst(pattern, "$1$2"); 
+0

Là où je peux apprendre pour les identifiants de groupe.? Aussi Que faire si je veux remplacer "TO" par - (tiret). c'est-à-dire des vidéos de sport 2002-2003 ici. – NETQuestion

+0

Je me suis trouvé String testStrAfterRegex = testStr.replaceFirst (pattern, "$ 2 - $ 4"); – NETQuestion

+0

@NETQuestion: Bonjour, vous pouvez en apprendre plus ici http://www.regular-expressions.info/brackets.html – Topera

Questions connexes