python - 带有 Lookbehind 的正则表达式拆分丢失了下半部分

标签 python python-3.x regex string split

我有一个包含多个关键字的字符串。我想将字符串拆分为这些关键字的列表(但保留关键字,因为它们确定了以下数据的含义)
以下面的字符串为例:

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/

相关文章:

python - 聚合数据并获取总和和计数

python - 为什么我在 .kv 文件中得到 `' NoneType' object has no attribute`?

python - 全局变量如何/为什么可用/在嵌套类实例的范围内,但 "nonlocal"变量不可用?

regex - 仅匹配字母数字字符

regex - 空正则表达式文字 (!!//) 的 Double-not 为 false,这是解析错误吗?

c++ - 如何在正则表达式中匹配 '*'

python - `scipy.ndimage.zoom()` 的意外行为 `order=0`

python - 对于 python 的 pip,requirements.txt 中 ruby​​ 的 gem 中的 twiddle-wakka (~>) 等效于什么?

python - 如何在 tkinter 应用程序中设置 Tab 键顺序?

python - 如何在代码中转换速度?