我想在多行字符串中使用正则表达式分离Final score:
之后的117.5
:
string = '''Shots Fired: 146 pra 131 Kills: 131
Shots Hit: 131 L=Xo¥s11o) (sam U} Deaths: O
89.73% 89.73 100%
Final Score: 117.5 “scone
Previous High Score: 115.2'''
m = re.search("Final score :[^ ]*", string)
if m:
print(m.group(1))
我似乎在做我应该做的一切,但什么也没印出来。显然m
是null
,在我的字符串中找不到任何内容。我做错了什么
匹配
[^ ]*
匹配任何字符的0+倍,除了广泛匹配的空格您可以使匹配更加具体,将数字与可选的小数部分匹配,并用捕获组将其包围
还请注意,您使用了小大写字母s,空格和冒号是颠倒的
如果匹配在行的开头,则使用锚定
^
和re.MULTILINE
Regex demo
示例代码
输出
您的代码有一些问题:
当您提供的示例中的标签为
Final Score:
(大写S
,冒号前没有空格(:
)时,您使用的模式与Final score :
匹配。相反,匹配标签Final Score:
类似数组的结构在Python中是零索引的。索引
0
将对应于第一个匹配,索引1
对应于第二个匹配,依此类推。您正在尝试访问m.group(1)
,在您的示例中,这不会产生任何结果(没有定义捕获组,因此所有内容都将位于m.group(0)
)你没有在一个捕获组中“隔离”你的数字。用括号(
()
)将用于匹配数字的模式部分括起来,以表示捕获组您的代码应该更像这样:
Repl.it
相关问题 更多 >
编程相关推荐