gpt4 book ai didi

python - 如何使用正则表达式分割字符串而不保留捕获组?

转载 作者:行者123 更新时间:2023-11-30 22:24:20 27 4
gpt4 key购买 nike

我想在 Python 中使用正则表达式带反向引用分割文本。

rexp = re.compile(r"([`]{1,})ABC\1")
rexp.split("blahblah``ABC``blahblah")

我得到了['blahblah', '``', 'blahblah'],但预期是['blahblah', 'blahblah']。如何在不保留捕获组的情况下分割字符串?

最佳答案

来自re.split()文档:

If capturing parentheses are used in pattern, then the text of all groups in the pattern are also returned as part of the resulting list.

由于您想使用反向引用,因此您无法避免第一个捕获组,但您可以将其余的捕获组设置为非捕获并后处理您的拆分以获得您想要的内容,例如:

rexp = re.compile(r"([`]{1,})->\s*(?:\S+)\s*\|(?:.+?)<-\1")
rexp.split("blahblah``->Left|Right<-``blahblah")[0::2] # ['blahblah', 'blahblah']

更新:我刚刚注意到你同时改变了你的模式,但原理是一样的:

rexp = re.compile(r"([`]{1,})ABC\1")  # also, if optimizing, equivalent to: (`+)ABC\1
rexp.split("blahblah``ABC``blahblah")[0::2] # ['blahblah', 'blahblah']

关于python - 如何使用正则表达式分割字符串而不保留捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47853171/

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