Maison > développement back-end > tutoriel php > Regex peut-il détecter et compter les motifs « X » verticaux dans l'art ASCII ?

Regex peut-il détecter et compter les motifs « X » verticaux dans l'art ASCII ?

Mary-Kate Olsen
Libérer: 2024-11-16 12:15:03
original
605 Les gens l'ont consulté

Can Regex Detect and Count Vertical

Trouver des modèles X verticaux en ASCII avec Regex

Énoncé du problème

Dans une image ASCII comme ci-dessous :

....X.......
..X..X...X....
X.X...X..X.....
X....XXXXXX.....
X..XXX...........
.....X..........
..............X
..X...........X....
..X...........X....X...
....X.....
Copier après la connexion

Nous visons à détecter le modèle suivant :

X
X
X
Copier après la connexion

où trois X sont alignés verticalement.

Questions

  1. Est-il possible de déterminer si de telles formations existent utiliser une regex ?
  2. Si oui, est-il possible de compter le nombre d'occurrences ?

Réponse à la question 1

Oui, l'expression régulière suivante permet d'identifier la présence de formations verticales en X :

(?xm)                    # ignore comments and whitespace, ^ matches beginning of line
^                        # beginning of line
(?:
    .                    # any character except \n
    (?=                  # lookahead
        .*+\n            # go to next line
        ( ?+ . )       # add a character to the 1st capturing group
        .*+\n            # next line
        ( ?+ . )       # add a character to the 2nd capturing group
    )
)*?                      # repeat as few times as needed
X .*+\n                  # X on the first line and advance to next line
?+                     # if 1st capturing group is defined, use it, consuming exactly the same number of characters as on the first line
X .*+\n                  # X on the 2nd line and advance to next line
?+                     # if 2st capturing group is defined, use it, consuming exactly the same number of characters as on the first line
X                        # X on the 3rd line
Copier après la connexion

Démo en ligne : https://regex101.com/r/YxPeXe/1

Réponse à la question 2

Solution indirecte

Pour compter le nombre de formations, nous pouvons effectuer la substitution suivante :

regex => 
Copier après la connexion

où regex est le modèle ci-dessus. La longueur de chaîne résultante sera égale au nombre de correspondances.

Démo en ligne : https://regex101.com/r/Tx6R63/1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal