gpt4 book ai didi

Python 正则表达式捕获组

转载 作者:行者123 更新时间:2023-12-01 00:53:38 27 4
gpt4 key购买 nike

string1 = "abcdbcdbcde"

我想将 string1 提取为三部分:(第一部分和第三部分可以为空字符串)

第一部分:a

第二部分(某些字符串的重复):bcdbcdbcd

第三部分:e

import re

string1 = "abcdbcdbcde"
m = re.match("(.*)(.+){2,}(.*)", string1)
print m.groups()[0], m.groups()[1], m.groups()[2]

因为上面的代码不起作用。

据我所知,括号运算符可以用作正则表达式捕获组或对模式的引用。如何在这两种情况下同时使用括号运算符?

我想要什么:

m.groups()[0] = "a"
m.groups()[1] = "bcdbcdbcd"
m.groups()[2] = "e"

最佳答案

如果第二部分应该是同一字符串的重复,您可以使用可选的第一部分和第三部分。对于第二部分,您可以使用捕获组和 back reference :

^.?(.+)\1+.?$

Regex demo

或者如果您想要所有捕获组:

^(.?)((.+)\3+)(.?)$
  • ^ 字符串开头
  • (.?) 第 1 组,可选择匹配任何字符
  • ( 第 2 组
    • (.+)\3+ 第 3 组,匹配任意字符,后跟对第 3 组的反向引用,重复 1+ 次
  • ) 关闭组 3
  • (.?) 第 4 组,可选择匹配任何字符
  • $ 字符串结尾

Regex demo

关于Python 正则表达式捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56389753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com