正则表达式按最后出现的模式拆分字符串

2024-10-01 11:36:56 发布

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

我使用regex将一个字符串<book name> by <author name>拆分为图书名和作者名。在

re.split(r'\bby\b', text, 0, re.I)

但是当书名中包含单词“by”(例如Death by Blackhole by Tyson=>;['Death', 'by Black...'])时,问题就出现了

如何按最后出现的搜索模式拆分字符串?在

我有一种预感,/+ve look ahead/behind在这里可能很有用,但是目前正在尝试构建正确的语法。在


Tags: 字符串textnamereby作者单词regex
3条回答

可以从拆分中重建:

parts = re.split(r'\bby\b', text, 0, re.I)
book, author = 'by'.join(parts[:-1]), parts[-1]

或者完全匹配:

^{pr2}$

您可以在by之前将findall与贪婪的.*一起使用:

re.findall(r'(.*)\s+by\s+(.*)', text, re.I)

^{}

您可以使用以下单个正则表达式:

re.search('((.*( by )?.*) by (.*))',text).group(2,4)

enter image description here

相关问题 更多 >