我必须找到所有仅由字母组成的字符串' a'和' b'以及' a'的每一个例子。紧随其后的是' b'并且紧接着是' b'。
例如:
mystring = 'bab babab babbab ab baba aba xyz'
然后我的正则表达式应该返回:
['bab' 'babab' 'babbab']
(在字符串' ab' - ' a'之前没有' b'。同样适用于' aba'和' ; xyz'不仅仅由' a'' b'组成。)
我使用了lookahead并编写了这个正则表达式:
re.findall(r'((?<=b)a(?=b))',mystring)
但这只会让我回复所有&#39; a&#39;其后是/之后是&#39; b&#39;像:
['a','a','a','a']
但我需要完整的话。如何使用正则表达式找到整个单词?我尝试用各种选项修改我的正则表达式,但似乎没有任何效果。怎么办呢?
答案 0 :(得分:3)
您可以使用以下正则表达式:
>>> re.findall(r'\b(?:b+a)+b+\b',mystring)
['bab', 'babab', 'babbab']
正如您在上图中所看到的,此正则表达式将匹配ba
的任意组合(b
可以多次出现),这会产生每a
前面的单词{ {1}}然后整个字符串后跟一个或多个b
。
答案 1 :(得分:0)
尝试
bbbabb
如果还允许babab
。
你不需要向前看或向后看。
编辑:
是的,要同时匹配b
(a
的共享re.findall(r'(b+a)+b+',mystring);
)等,它应该是
<div class="hexagon"></div>
.hexagon {
position: relative;
width: 300px;
height: 173.21px;
background-color: #64C7CC;
margin: 86.60px 0;
border-left: solid 5px #333333;
border-right: solid 5px #333333;
}
.hexagon:before,
.hexagon:after {
content: "";
position: absolute;
z-index: 1;
width: 212.13px;
height: 212.13px;
-webkit-transform: scaleY(0.5774) rotate(-45deg);
-ms-transform: scaleY(0.5774) rotate(-45deg);
transform: scaleY(0.5774) rotate(-45deg);
background-color: inherit;
left: 38.9340px;
}
.hexagon:before {
top: -106.0660px;
border-top: solid 7.0711px #333333;
border-right: solid 7.0711px #333333;
}
.hexagon:after {
bottom: -106.0660px;
border-bottom: solid 7.0711px #333333;
border-left: solid 7.0711px #333333;
}