首頁  >  文章  >  後端開發  >  正規表示式可以偵測和計算 ASCII 藝術中的垂直“X”模式嗎?

正規表示式可以偵測和計算 ASCII 藝術中的垂直“X”模式嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-16 12:15:03474瀏覽

Can Regex Detect and Count Vertical

使用正規表示式找出ASCII 中的垂直X 模式

問題陳述

如下所示的ASCII 影像中:

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

我們的目標是偵測以下模式:

X
X
X

其中三個 X 垂直對齊。

問題

  1. 是否可以確定這種形態是否存在使用正規表示式?
  2. 如果可以,是否可以統計出現的次數?

問題1的答案

是的,下面的正規表示式可以辨識出現的次數垂直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

線上示範: https://regex101.com/r/YxPeXe/1

問題2 的答案

間接解

要計算編隊的數量,我們可以執行以下替換:

regex => 

其中正規表示式是上面的模式。產生的字串長度將等於匹配數。

線上展示: https://regex101.com/r/Tx6R63/1

以上是正規表示式可以偵測和計算 ASCII 藝術中的垂直“X”模式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn