栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

完全匹配相同字符的N个重复

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

完全匹配相同字符的N个重复

使用负前瞻 负后瞻。

这将是正则表达式:

(.)(?<!1.)1{N-1}(?!1)
除了Python的re模块已损坏(请参阅此链接)。

英文翻译:“匹配任何字符。请确保在匹配该字符之后,它之前的字符也不是该字符。再匹配该字符的N-1个重复。请确保这些重复之后的字符也不是字符。”

不幸的是,re模块(和大多数正则表达式引擎)已损坏,因为您不能在后置断言中使用反向引用。向后断言必须为恒定长度,并且编译器不够聪明,无法推断出何时使用了反向引用(即使在这种情况下,反向引用也具有恒定长度)。我们必须通过这种方式来处理正则表达式编译器,如下所示:

实际的答案 将是混乱:

r"(.)(?<!(?=1)..)1{N-1}(?!1)"

这可以通过使用

(?=1)..
代替
1.
(在大多数情况下,它们是等效的)解决re模块中的错误。这使regex引擎确切知道后置断言的宽度,因此可以在PCRE和re中工作。


当然,现实世界中的解决方案就像

[x.group() for x in re.finditer(r"(.)1*","xxaaaayyybbbbbzzccccxx") if len(x.group()) == 4]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号