Comment puis-je comparer le texte à l'intérieur des parenthèses en utilisant les regex?
J'ai le modèle suivant:
(COMPANY) -277.9887 (ASP,) -277.9887 (INC.)
Je veux le résultat final:
SOCIÉTÉ ASP, INC.
Actuellement, j'ai le code suivant et il revient toujours au modèle d'origine ( je suppose parce que le groupe s'inscrit entre le premier '(' et enfin ')'
Pattern p = Pattern.compile("((.*))",Pattern.DOTALL);
Matcher matcher = p.matcher(eName);
while(matcher.find())
{
System.out.println("found match:"+matcher.group(1));
}
J'ai du mal à obtenir les résultats dont j'ai besoin et d'apprécier l'aide. Je ne suis pas inquiet au sujet de la concaténation des résultats après je reçois chaque groupe, juste besoin de chaque groupe.
OriginalL'auteur northpole | 2009-08-26
Vous devez vous connecter pour publier un commentaire.
Vous êtes les bienvenus. 🙂
OriginalL'auteur chaos
Vos .* quantificateur est "avides", donc oui, c'est saisissant tout ce qui est entre la première et la dernière parenthèse. Que le chaos dit, sèchement :), à l'aide de l' .*? est un non-greedy quantificateur, il saisira aussi peu que possible tout en maintenant le match.
Et vous devez vous échapper de la parenthèse dans la regex, sinon ça devient un autre groupe. C'est en supposant qu'il littérale parenthèse dans votre chaîne. Je soupçonne que vous avez évoqués dans la question initiale que votre motif est en fait votre chaîne.
Requête: sont "SOCIÉTÉ", "ASP", et "INC." nécessaire?
Si vous devez avoir des valeurs pour eux, alors vous voulez utiliser + à la place de *, le + est 1 ou plus, le * est égal à zéro ou plus, de sorte qu'un * correspondent à la chaîne littérale "()"
par exemple: "((.+?))"
Vous pouvez et probablement devrait essayer d'être plus précis que". " dans la correspondance de vos groupes. Si la chaîne est prévu uniquement des lettres majuscules et peut-être illustré de la ponctuation, alors vous pouvez essayer quelque chose comme "\(([A-Z,.]+?)\)". De cette façon, les louches de données est au moins remarqué et peut être corrigé.
OriginalL'auteur ptomli
Testé avec Java 8:
/** * Schéma ci-dessous renvoie la chaîne de caractères à l'intérieur de la Parenthèse.
OriginalL'auteur Chetan Laddha
Pas une réponse directe à votre question, mais je vous recommande d'utiliser RegxTester pour arriver à la réponse et à l'avenir toute question rapidement. Il vous permet de tester en temps réel.
OriginalL'auteur Oliver
Si vos cordes sont toujours d'aller le chercher comme ça, vous pourriez vous en sortir avec juste l'aide d'un couple d'appels à replaceAll à la place. Cela semble fonctionner pour moi:
Probablement pas le plus efficace du monde, mais assez simple.
OriginalL'auteur Brent Writes Code