我有一个字符串:
s = 'Abc - 33 SR 11 Kill(s) P G - (Type-1P-G) 2 Kill(s) M 1 Kill(s) S - M9A CWS 1 Kill(s) 11 Kill(s)'
我试图将其拆分以捕获杀死的数量,以及每个"XY Kill(s)"
之前的信息以获得此输出:
['Abc - 33 SR',
'P G - (Type-1P-G)',
'M',
'S - M9A CWS']
获得死亡人数很简单:
re.findall(r"(\d+) Kill", s)
['11', '2', '1', '1', '11']
获取文本变得更加困难。通过研究,我尝试使用以下正则表达式,这只是一系列捕获组的开始:
re.findall(r"(?=[0-9]+ Kill)", s)
['', '', '', '', '', '', '']
然后我把它改成了在“每个组之前添加任意数量的字符”。你知道吗
re.findall(r"(.+)(?=[0-9]+ Kill)", s)
['Abc - 33 SR 11 Kill(s) P G - (Type-1P-G) 2 Kill(s) M 1 Kill(s) S - M9A CWS 1 Kill(s) 1']
这只是给出了整个字符串。在“任意数字的空间杀死”之前,我如何调整它来捕获所有的东西?你知道吗
让我们把受骗者赶走。我参考了以下内容。第二个看起来特别有用,但我一直无法使它适合这个目的。你知道吗
Extract Number before a Character in a String Using Python
How would I get everything before a : in a string Python
how to get the last part of a string before a certain character?。你知道吗
你可以用
参见regex demo
细节
(.*?)
-捕获组1:除换行符以外的任何0+个字符,尽可能少\s*
-0+空格(\d+)
-捕获组2:一个或多个数字Kill(s)
-一个空间和Kill(s)
子串\s*
-0+空格Python demo:
输出:
您可以使用^{} 来获得匹配之间的所有内容的列表。你知道吗
您可以清理它以删除空白和空字符串。你知道吗
相关问题 更多 >
编程相关推荐