Heim > Artikel > Backend-Entwicklung > Können reguläre Ausdrücke zum Zählen vertikaler Linienformationen in ASCII-Bildern verwendet werden?
Im Zusammenhang mit der Analyse von ASCII-Bildern oder Karten können Situationen auftreten, in denen Es wird notwendig, bestimmte Muster zu identifizieren. Ein solches Muster ist eine vertikale Linienformation aus drei Xs. Mit regulären Ausdrücken ist es möglich, diese Aufgabe effektiv zu lösen.
Um festzustellen, ob eine vertikale Linie vorliegt Wenn eine Bildung von drei Wenn das Muster erkannt wird, wird der Ausdruck erfolgreich abgeglichen.
(?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
Dieser Ausdruck verwendet eine ähnliche Technik wie die erste Frage, jedoch mit Änderungen, um X in die im ersten Lookahead abgeglichenen Zeichen aufzunehmen und es mit einem Quantifizierer zu umschließen um die Anzahl der Übereinstimmungen zu zählen.
^ (?: (?: # match .+? characters . (?= # counting the same number on the following two lines .*+\n ( ?+ . ) .*+\n ( ?+ . ) ) )+? (?<= X ) # till the above consumes an X (?= # that matches the following conditions .*+\n ?+ (?<= X ) .*+\n ?+ (?<= X ) ) (?= # count the number of matches .*+\n ( ?+ . ) # the number of matches = length of ) )* # repeat as long as there are matches on this line .*\n? # remove the rest of the lineDurch die Verwendung der Länge der resultierenden Zeichenfolge als Zählung bietet diese Lösung einen indirekten Ansatz zur Beantwortung von Frage zwei.
Das obige ist der detaillierte Inhalt vonKönnen reguläre Ausdrücke zum Zählen vertikaler Linienformationen in ASCII-Bildern verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!