我是 python 新手,只有 Perl 基础知识。 我正在尝试使用正则表达式捕获子字符串。
>>> a='Question 73 of 2943'
>>> import re
>>> re.match("Question.*(\d+)\s+of", a).group(0)
'Question 73 of'
>>> re.match("Question.*(\d+)\s+of", a).group(1)
'3'
我想做的是在小组中追到73。我认为括号可以做到这一点。
最佳答案
.*
是贪婪的。这意味着它将继续匹配任何字符(行终止符除外)0 次或多次。这意味着您设置的 (\d+)
捕获组永远不会发生。您可以做的是通过添加 ?
使 .*
部分变得懒惰,这样您的正则表达式就会看起来像...
re.match(r"Question.*?(\d+)\s+of", a)
惰性正则表达式和贪婪正则表达式之间的区别得到了很好的解释 here
关于Python使用正则表达式从字符串中捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49849936/