示例1字符串:
Aquaman Figure, XL DC Comics
示例2字符串:
Rocket Raccoon, Mini Marvel
正则表达式:
/(DC Comics|Marvel)/
匹配样本1:
DC Comics
匹配示例2:
Marvel
中完美运作
如何扭转此问题?
我想仅匹配Aquaman Figure, XL
和Rocket Raccoon, Mini
。
修改
/(.+)(?=Marvel)/
似乎在做这项工作。它不包括Marvel来自Rocket Raccon!如何使这也适用于DC漫画?
答案 0 :(得分:1)
/(.+)(?=Marvel)/
(或两者都为/(.+)(?=DC Comics|Marvel)/
)无法为以下内容工作:
John Marvel Bob
我认为你想要的结果是:
John Bob
您只会在第一场比赛中获得John
,并且您将在第二场比赛中获得Marvel Bob
(因为预测并不会消耗掉所看到的内容)前面的人物)。
或者不包含任何字符串的内容(因为您要求下一个字符与某些给定字符匹配才能获得匹配)。
最简单的解决方案可能只是用空字符串替换两个所需的子字符串。替换:
DC Comics|Marvel
使用:
(empty string)
或者您可以反复搜索:
/(.*?)(DC Comics|Marvel|$)/
然后只提取第一个group(它将对应于匹配.*
的内容,这是从最后一场比赛结束到之前的所有内容" DC Comics" ," Marvel"或字符串的结尾)。
需要使用reluctant quantifier ?
来阻止.*
与John Marvel Bob
匹配,而不仅仅是John
中的John Marvel Bob Marvel
。
答案 1 :(得分:0)
re.findall(r"(.*)(?=Marvel|Comics)",input)
这正是你正在寻找的。它在python.input中将是你的字符串。