Expressions régulières et GWT

Mes questions sont les suivantes: existe-t-il une bonne solution pour utiliser l’expression régulière dans GWT?

Je ne suis pas satisfait de l’utilisation de Ssortingng.split (regex) par exemple. GWT traduit le code en JS et utilise ensuite le regex en tant que regex JS. Mais je ne peux pas utiliser quelque chose comme Java Matcher ou Java Pattern. Mais j’en aurais besoin pour la correspondance de groupe.

Y a-t-il une possibilité ou une bibliothèque?

J’ai essayé Jakarta Regexp, mais j’avais d’autres problèmes car GWT n’émule pas toutes les méthodes du SDK Java utilisé par cette bibliothèque.

Je veux pouvoir utiliser quelque chose comme ça du côté client:

// Comstack and use regular expression Pattern pattern = Pattern.comstack(patternStr); Matcher matcher = pattern.matcher(inputStr); boolean matchFound = matcher.find(); if (matchFound) { // Get all groups for this match for (int i=0; i<=matcher.groupCount(); i++) { String groupStr = matcher.group(i); System.out.println(groupStr); } } 

Le même code utilisant RegExp pourrait être:

 // Comstack and use regular expression RegExp regExp = RegExp.comstack(patternStr); MatchResult matcher = regExp.exec(inputStr); boolean matchFound = matcher != null; // equivalent to regExp.test(inputStr); if (matchFound) { // Get all groups for this match for (int i = 0; i < matcher.getGroupCount(); i++) { String groupStr = matcher.getGroup(i); System.out.println(groupStr); } } 

GWT 2.1 a maintenant une classe RegExp qui pourrait résoudre votre problème:

Cette réponse couvre TOUS les correspondances, pas seulement une, comme dans d’autres réponses:

Fonction:

 private ArrayList getMatches(Ssortingng input, Ssortingng pattern) { ArrayList matches = new ArrayList(); RegExp regExp = RegExp.comstack(pattern, "g"); for (MatchResult matcher = regExp.exec(input); matcher != null; matcher = regExp.exec(input)) { matches.add(matcher.getGroup(0)); } return matches; } 

… et exemple d’utilisation:

 ArrayList matches = getMatches(someInputStr, "\\$\\{[A-Za-z_0-9]+\\}"); for (int i = 0; i < matches.size(); i++) { String match = matches.get(i); } 

Si vous voulez une solution GWT pure, je ne suis pas sûr que cela puisse être fait. Mais si vous souhaitez utiliser JSNI, vous pouvez utiliser l’object RegExp de JavaScript pour obtenir les groupes correspondants et tout. Vous devrez apprendre l’object JSNI for GWT et JavaScript RegExp.

La bibliothèque GWTx semble fournir une émulation de java.util.regex.Pattern et des amis. Cela ne semble pas complet (Matcher en particulier), mais peut être un bon début.

La technique qu’ils utilisent pour twigr leurs propres implémentations de classes Java du côté client est la déclaration dans le module XML. Il est mentionné dans la documentation GWT, la description du module XML sous “Remplacement d’une implémentation d’un package avec un autre”. Les classes traduisibles JRE standard dans GWT sont émulées de la même manière.