Python正则表达式如何查找(子)字符串的匹配出现次数?

2024-05-27 11:17:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个结构,可以归结为:“至少出现1次(子串)a,然后出现相同数量的(子串)b”。 所以“ab”、“aaabbb”和“AAAAA BBBBB”被接受, “aab”或“aaabbb”不是

我发现如果出现的次数是固定的(比如说5次),我可以使用 re.compile("a{5}b{5}") ,但我不知道发生的次数。我只需要他们平等。 我试过了,但我想那是一厢情愿


Tags: re数量ab次数结构compileaaaaa子串
1条回答
网友
1楼 · 发布于 2024-05-27 11:17:41

内置的re不支持所有格量词/原子组,也不支持递归或平衡组,所有这些功能都可以帮助您构建此模式

因此,最简单的解决方案是使用pip install regex安装PyPi regex库,然后使用How can we match a^n b^n?解决方案

否则,加入一些Python代码和一个简单的(a+)(b+)正则表达式:

import re
texts = [ "ab", "aaabbb", "aaaaabbbbb", "aab", "aaabbbb" ]
for text in texts:
    match = re.fullmatch(r'(a+)(b+)', text)
    if len(match.group(1)) == len(match.group(2)):
        print( text, '- MATCH' )
    else:
        print( text, '- NO MATCH' )

this demo

ab - MATCH
aaabbb - MATCH
aaaaabbbbb - MATCH
aab - NO MATCH
aaabbbb - NO MATCH

注:

  • re.fullmatch(r'(a+)(b+)', text)匹配只包含一个或多个a然后是一个或多个b的整个字符串
  • if len(match.group(1)) == len(match.group(2)):正在检查ab的长度,并且只传递计数相等的字符串

相关问题 更多 >

    热门问题