Python中提取ASCII图形的正则表达式

为了学习,我试图使用正则表达式在一个更大的文本文件中找出一个给定的 ASCII 数字的所有出现。


输入数字是


| |

###O

| |

示例更大的输入文件是


  | |                                

  ###O                               

  | |           | |                  

                ###O                 

                | |              | | 

                                 ###O

                                 | | 

什么是简洁的正则表达式来找出那个大文件中所有出现的输入图形?


青春有我
浏览 169回答 2
2回答

慕哥6287543

根据您希望匹配的宽松/精确程度,以下内容将慷慨地匹配看起来像您的 ASCII 艺术的东西:(\s+)[|]\s[|]\s*\R+\s*\1###O\s*\R+\s*\1[|]\s[|]由于它对空白很宽容,因此它也将匹配标识变得不稳定的艺术。如果你想更严格,这将很难,因为一个“符号”结束和新符号开始的重叠线。将其转换为仍然尊重缩进的正则表达式是我无法解决的问题,因为我想使用简单的反向引用而不是后视。

智慧大石

对于给定的情况,捕获它的正则表达式是: "\s*\| \|\s*###O\s*\| \|"只需使用rePython 中的包计算出现次数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python