正则表达式可以检测和计算 ASCII 艺术中的垂直'X”模式吗?

Mary-Kate Olsen
发布: 2024-11-16 12:15:03
原创
501 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板