一个单词里面的正则表达式,包含给定的字符

时间:2018-04-23 16:30:03

标签: python regex

如果我有一个文本(例如This is g56875f562f624g64a4b54a4g51bb3)我如何匹配由[a,b,0-9]组成的长度为5的子字符串,其中包含至少一个字母( a或b)并且不以空格开头或结尾(因此51bb3不应匹配,因为它位于字符串的末尾)?

示例中的匹配项为64a4b4a4b5a4b544b54ab54a4

我想使用Python。

1 个答案:

答案 0 :(得分:1)

首先准确匹配[a,b,0-9]的5次出现:

[ab0-9]{5}

然后将其包裹在一个预测中,以便它可以产生重叠的匹配:

(?=([ab0-9]{5}))

然后添加另一个前瞻,断言在接下来的5个字符中某处有ab

(?=.{,4}[ab])(?=([ab0-9]{5}))

最后添加声明缺少空格的外观:

(?<!\s)(?<!^)(?=.{,4}[ab])(?=([ab0-9]{5})(?!\s|$))

另请参阅online demo