0
votes

Comment une expression régulière correspond-elle à des sous-chaînes non répétées dans une chaîne?

Il y a une chaîne: xxx

Je veux utiliser des expressions régulières pour correspondre à des substrings non répétitifs comme: xxx

Comment peut-on Je fais ça?


3 commentaires

Tout d'abord, vous ne pouvez pas faire cela uniquement avec REGEXP, car vous devriez vérifier y a-t-il déjà avant une nouvelle combinaison. Vous devriez créer un algorithme de vérification et après cela seulement faire des sous-chaînes avec REGEXP


Erdredre C'est possible avec des moteurs de regex moins restrictifs cependant.


@Fankpuffer Ce n'est pas un duplicata comme l'autre question demande la correspondance de cordes entières pendant que cette question demande de faire correspondre les sous-chaînes.


3 Réponses :


0
votes

Vous pouvez itérair sur la longueur de la chaîne, puis utiliser une expression régulière pour affirmer que la sous-chaîne ne répète pas, par exemple xxx


0 commentaires

0
votes

Vous pouvez l'utiliser aussi longtemps que vous pouvez tolérer des correspondances vides:

import java.util.Arrays;

public class HelloWorld
{
  public static void main(String[] args)
  {
    String[] items = "1112344866893334".split("(\\d)\\1+");
    System.out.print(Arrays.toString(items));
  }
}


0 commentaires

0
votes

J'ai modifié ma réponse précédente pour inclure des cas particuliers.

Ceux-ci incluent:

  • String commence par des chiffres répétés (par exemple 111 .....)
  • String vide
  • String ne contient que des chiffres répétés (par exemple 1122334455)
  • série de différents chiffres répétés (par exemple 11122233365 ...)
  • Série de répétitions différentes dans la chaîne (par exemple 4311122233398) xxx

    Le premier remplacement remplace toutes les occurrences de chiffres répétés avec AA. La seconde supprime répéter A du début de la chaîne. La scission se divise sur un A répété.


0 commentaires