加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在正则表达式中使用带有字符的“环视”时捕获整个字符串?

发布时间:2020-12-16 23:46:04 所属栏目:Python 来源:网络整理
导读:我必须找到仅由字母a和b组成的所有字符串,并且a的每个实例后面紧跟b并且紧跟在b之后. 例如: mystring = 'bab babab babbab ab baba aba xyz' 然后我的正则表达式应该返回: ['bab' 'babab' 'babbab'] (在字符串ab中 a前面没有b.类似地aba和xyz不仅仅是a,b.)

我必须找到仅由字母’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)

但这只会让我回复所有’a’的实例,这些实例后跟/前面跟’b’,如:

['a','a','a']

但我需要完整的话.如何使用正则表达式找到整个单词?我尝试用各种选项修改我的正则表达式,但似乎没有任何效果.如何才能做到这一点?

最佳答案
您可以使用以下正则表达式:

>>> re.findall(r'b(?:b+a)+b+b',mystring)
['bab','babab','babbab']

Debuggex Demo

正如您在前面的图表中所看到的,这个正则表达式将匹配ba的任何组合(其中b可以呈现多于一次),其产生每个先于b的单词然后整个字符串可以跟随一个或多个b.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读