我有一个包含多个关键字的字符串。我想将字符串拆分为这些关键字的列表(但保留关键字,因为它们确定了以下数据的含义)
以下面的字符串为例:
test_string = "ªttypmp3pfilfDjTunes/DJ Music/(I've Had) The Time Of My Life.mp3tsng<(I've Had) The Time Of My Lifetart:Bill Medley & Jennifer Warnes"
重要的关键字是“ttyp”、“pfil”、“tsng”、“tart”。我想拆分文件,以便输出看起来:split_test_string = ["ª","ttypmp3","pfilfDjTunes/DJ Music/(I've Had) The Time Of My Life.mp3","tsng<(I've Had) The Time Of My Life","tart:Bill Medley & Jennifer Warnes"].
我一直在研究正则表达式,我认为这个表达式可以工作,但是在 Python 中测试时,我最终丢失了我想保留的部分。根据 Python re.split 文档,这应该可以工作。查看我的正则表达式计算器:https://regex101.com/r/FOlgv8/1
注意:我正在尝试让第一部分工作。然后我将使用 | 添加其余的关键字。
regex = r'(?=ttyp).*'
这是我的示例代码:import re
regex = r'(?=ttyp).*'
split_test_string = re.split(regex, test_string)
print(f"Results: {split_test_string}")
控制台输出:Results: ['ª', '']
我尝试过积极的前瞻和积极的回顾,但没有运气。我可以只使用文字“ttyp”,但随后我丢失了关键字。任何帮助将不胜感激,我一直在研究,试验和错误(主要是错误)几个小时。
最佳答案
给你:
re.split("(?=ttyp|pfil|tsng|tart)", test_string)
你的不工作的原因是你 split 了 .*
,这意味着您捕获分隔符之后的所有内容并将其视为分隔符本身(从而抛出它)。
关于python - 带有 Lookbehind 的正则表达式拆分丢失了下半部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65878477/