Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie mit Regex vertikale Linien aus drei „X“ in einem ASCII-Bild finden?

Können Sie mit Regex vertikale Linien aus drei „X“ in einem ASCII-Bild finden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 12:42:02834Durchsuche

Can You Find Vertical Lines of Three 'X's in an ASCII Image Using Regex?

Vertikale Regex-Übereinstimmung in einem ASCII-Bild

Das Problem

In einem ASCII-Bild wie:

....X.......
..X..X...X....
X.X...X..X.....
X....XXXXXX.....
X..XXX...........
.....X..........
..............X
..X...........X....
..X...........X....X...
....X.....

wir' Ich möchte eine einfache vertikale Linienformation aus drei PHP, Perl, .NET oder ähnliche reguläre Ausdrücke können wir den folgenden Ausdruck verwenden:

Frage 2: Zählen solcher Formationen

(?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
Einfaches Matching

Für Da es sich um eine direkte Übereinstimmung handelt und die Anzahl der Übereinstimmungen erforderlich ist, kann diese Frage aufgrund der begrenzten Lookbehind-Unterstützung nicht direkt in PCRE oder Perl gelöst werden.

Längen-/indirekte Lösung

Wenn jedoch Wird die Antwort als Länge eines Spiels oder einer Auswechslung akzeptiert, kann sie mit folgendem Ausdruck beantwortet werden:

Das obige ist der detaillierte Inhalt vonKönnen Sie mit Regex vertikale Linien aus drei „X“ in einem ASCII-Bild finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn