Comment identifier les chaînes contenant plus de chiffres que les non-chiffres en utilisant l'expression régulière (Motif) en Java? Je vous remercie.Expression régulière Java pour identifier les chaînes avec plus de chiffres que les non-chiffres
Répondre
Ce n'est pas un langage courant, et donc il ne peut pas être capturé par une regex vanille. Il est peut-être possible de toute façon, mais il sera certainement plus facile de ne pas utiliser une expression régulière:
public static boolean moreDigitsThanNonDigits(String s) {
int diff = 0;
for(int i = 0; i < s.length(); ++i) {
if(Character.isDigit(s.charAt(i))) ++diff;
else --diff;
}
return diff > 0;
}
Je ne suis pas sûr que l'utilisation des expressions régulières serait ici la meilleure solution.
Vous ne serez pas en mesure d'écrire une expression rationnelle qui fait cela. Mais vous avez déjà dit que vous utilisez Java, pourquoi ne pas mélanger un peu de code? Regex seul ne peut pas (puisqu'ils ne comptent rien);
public boolean moreDigitsThanNonDigits(String input) {
String nonDigits = input.replace("[0-9]","");
return input.length() > (nonDigits.length * 2);
}
Salut, Pouvez-vous s'il vous plaît clarifier mon doute, en utilisant java.util.regex pacakgae, vais-je être en mesure de rechercher le tout type de modèle dans les fichiers texte ou dans tout type de format de fichier? – gmhk
Les diverses méthodes java.lang.String 'replace ...' peuvent déjà accepter regex. Pas besoin d'apporter vos propres instances Pattern, Matcher, etc. –
mais si vous voulez les utiliser, utilisez seulement deux remplacements: un qui supprime tous les chiffres et un qui ne les garde que. puis comparez les longueurs de chaîne des résultats.
Bien sûr, je préfère utiliser la réponse de Dave.
Salut, Pouvez-vous s'il vous plaît clarifier mon doute, en utilisant java.util.regex pacakgae, vais-je être en mesure de rechercher le type quelconque de modèle dans les fichiers texte ou dans tout type de format de fichier? – gmhk
Étant donné que les expressions régulières sont utilisées pour comparer les modèles dans une chaîne, alors mon doute si google recherche le concept de modèles à rechercher dans tous les fichiers? – gmhk
Google fait beaucoup plus que simplement comparer regex à certains fichiers. –
Les expressions régulières ne sont théoriquement pas capables de préformer une telle tâche. Ils sont équivalents aux langages formels ou aux automates (réguliers). Ils n'ont aucune notion de mémoire (ou de pile), ils ne peuvent donc pas compter les occurrences de symboles. Les extensions suivantes en termes d'expressivité sont les automates à bascule (ou machines à pile), qui correspondent à des grammaires sans contexte. Avant d'écrire un tel grammeur pour cette tâche, l'utilisation d'une méthode comme la moreDigitsThanNonDigits
ci-dessus serait appropriée.
Les expressions régulières de style Perl (et Java) sont en réalité plus puissantes que les langues normales, en raison de la syntaxe "\ number" pour le retour en arrière sur un groupe capturé. Ils peuvent reconnaître les langues qui ne sont pas régulières. Par exemple, la langue de n'importe quelle chaîne répétée deux fois (qui n'est pas régulière, ni même sans contexte) peut être reconnue par "(. *) \ 1". – newacct
Merci de le signaler! Votre exemple serait "(. *) \ 1 \ 1", n'est-ce pas? Mais les comparaisons de longueur ne sont toujours pas possibles, je suppose. – miku
Comme déjà mentionné, la langue en question n'est pas régulière et ne peut pas être détectée en utilisant une expression régulière.
Je vais vous donner un moyen supplémentaire de compter le nombre de chiffres et le nombre de non-chiffres dans une chaîne en utilisant regex !!
Vous pouvez utiliser la méthode String.replaceAll
pour supprimer tous les non-chiffres dans la chaîne d'entrée. La longueur de la chaîne résultante sera le nombre de chiffres dans l'entrée.
De même, vous pouvez supprimer tous les chiffres de la chaîne d'entrée et la longueur de la chaîne résultante sera le nombre de non-chiffres dans la chaîne d'entrée.
public static boolean test(String str) {
int numDigits = str.replaceAll("\\D","").length();
int numNonDigits = str.replaceAll("\\d","").length();
return numDigits > numNonDigits;
}
- 1. Expression régulière pour supprimer les chaînes HTML
- 2. Expression régulière pour correspondre jusqu'à 10 chiffres
- 3. C# Expression régulière pour faire correspondre les lettres, les chiffres et les traits de soulignement
- 4. Négation de chaînes littérales dans une expression régulière Java
- 5. ANTLR Grammaire pour syntaxe Java Expression régulière
- 6. Expression régulière pour masquer les chaînes en utilisant la substitution de chaînes
- 7. Expression régulière pour les objets HTML
- 8. Expression Java correspondant pour remplacer les sous-chaînes
- 9. Expression régulière pour supprimer les guillemets de chiffres cités dans une chaîne
- 10. Java Expression régulière Problème
- 11. expression régulière pour supprimer les liens
- 12. Affecter les variables avec une expression régulière
- 13. Expression régulière pour trouver une expression régulière?
- 14. expression régulière pour mot de passe
- 15. Expression régulière (Java)
- 16. expression régulière pour les caractères non consécutifs
- 17. Expression régulière pour remplacer les liens avec juste leurs étiquettes
- 18. Que fait cette expression régulière?
- 19. Expression régulière accepte les numéros personnalisés
- 20. Expression régulière pour parser hashtags en Java
- 21. expression régulière pour analyser la chaîne d'option
- 22. Expression régulière pour l'hôte
- 23. Expression régulière pour catégoriser les parties d'une adresse de service?
- 24. que signifie cette expression régulière?
- 25. Python expression régulière pour analyser les balises div
- 26. Expression régulière pour analyser les messages d'erreur du studio visuel
- 27. Comment identifier les chaînes codées en UTF-8
- 28. python expression régulière pour retweets
- 29. Expression régulière pour les fichiers cachés sous unix
- 30. Débutant: Expression régulière pour l'URL
Je n'insiste pas sur l'utilisation de l'expression régulière, je dois identifier les chaînes en quelque sorte. –