如何用正则匹配连续两行及以上仅含25个以上斜杠的行?
正则匹配连续多行纯斜杠的问题分析
问题背景
用户提供的文本内容如下:
ABC GFGFG ///////////////////////// ggtrgrh htrhrth nbtnyumjyumu myuuykukyyuk ///////////////////////// ///////////////////////// AAAAA AAAAAAAAAAA RET5t4yy HTH^565y56y ///////////////////////// tertet ///////////////////////// ///////////////////////// /////////////////////////
需求:匹配连续两行及以上仅包含25个或更多斜杠的行,即示例中myuuykukyyuk与AAAAA之间的两行,以及最后三行。
用户尝试的无效正则:
(?:.*/{25,} ? ?){3} ^/*/{25,}$
你的正则存在的问题
- 逻辑结构混乱:两个正则片段没有合理组合,既没明确连续多行的匹配逻辑,也没形成完整的匹配规则。
- 未限制行的纯净性:
.*/{25,}会匹配包含25个斜杠的行,但允许行内存在其他字符,不符合“仅包含斜杠”的要求。 - 换行处理不规范:
? ?的写法错误,无法正确匹配不同系统的换行符(标准写法应为\r?\n),且未关联后续符合条件的行。 - 重复次数不符合需求:
{3}强制要求匹配3次,但需求是连续2行及以上,次数限定错误,且未结合行边界确保每行独立。
正确的正则写法
需要开启多行模式(Multiline Mode),让^和$匹配每行的首尾,正则如下:
^(/{25,})(?:\r?\n/{25,})+$
规则解释
^/{25,}$:严格匹配单行仅由25个及以上斜杠组成的行(?:\r?\n/{25,})+:匹配1个或多个(至少1个)换行符,后接符合条件的斜杠行,确保整体是连续2行及以上的目标行
如果需要避免匹配更长连续块中的拆分片段(比如最后三行是连续3行,不想被拆分成2行的匹配),可以结合环视确保前后不是斜杠行:
(?<!/{25,}\r?\n)^(/{25,})(?:\r?\n/{25,})+(?!\r?\n/{25,})
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

