如果我有一个文本(例如This is g56875f562f624g64a4b54a4g51bb3
)我如何匹配由[a,b,0-9]组成的长度为5的子字符串,其中包含至少一个字母( a或b)并且不以空格开头或结尾(因此51bb3
不应匹配,因为它位于字符串的末尾)?
示例中的匹配项为64a4b
,4a4b5
,a4b54
,4b54a
和b54a4
。
我想使用Python。
答案 0 :(得分:1)
首先准确匹配[a,b,0-9]的5次出现:
[ab0-9]{5}
然后将其包裹在一个预测中,以便它可以产生重叠的匹配:
(?=([ab0-9]{5}))
然后添加另一个前瞻,断言在接下来的5个字符中某处有a
或b
:
(?=.{,4}[ab])(?=([ab0-9]{5}))
最后添加声明缺少空格的外观:
(?<!\s)(?<!^)(?=.{,4}[ab])(?=([ab0-9]{5})(?!\s|$))
另请参阅online demo。