题目
阅读下列代码,print输出什么?import re pattern = pile(r'd+') # 查找数字result1 = pattern.findall('runoob 123 google 456')result2 = pattern.findall('run88oob123google456', 0, 10) print(result1)print(result2)A. ['12', '45']['88', '12']B. ['123', '456']['88', '12']C. ['1', '4']['8', '1']D. '123', '456''88', '12'
阅读下列代码,print输出什么?import re pattern = pile(r'\d+') # 查找数字result1 = pattern.findall('runoob 123 google 456')result2 = pattern.findall('run88oob123google456', 0, 10) print(result1)print(result2)
A. ['12', '45']['88', '12']
B. ['123', '456']['88', '12']
C. ['1', '4']['8', '1']
D. '123', '456''88', '12'
题目解答
答案
B
解析
考查要点:本题主要考查Python中re模块的findall方法的用法,特别是正则表达式\d+的匹配规则,以及findall方法中start和end参数对匹配范围的影响。
解题核心思路:
- 正则表达式
\d+的作用:匹配一个或多个连续的数字。 findall方法的基本功能:返回所有非重叠匹配的字符串列表。start和end参数的作用:限定匹配的范围,即只在子字符串中进行匹配。
破题关键点:
- result1的匹配范围:直接对完整字符串
'runoob 123 google 456'进行匹配,找到所有连续数字序列。 - result2的匹配范围:对字符串
'run88oob123google456'的子字符串(索引0到9)进行匹配,需先确定子字符串的具体内容。
分析result1
- 原始字符串:
'runoob 123 google 456' - 匹配规则:
\d+会匹配连续的数字序列。 - 匹配结果:
123(完整数字序列)456(完整数字序列)
- 输出:
['123', '456']
分析result2
- 原始字符串:
'run88oob123google456' - 子字符串范围:
start=0,end=10,即取前10个字符(索引0到9)。 - 子字符串内容:
'run88oob1'(注意:索引9对应字符'1')。 - 匹配规则:
\d+会匹配连续的数字序列。 - 匹配结果:
88(索引3-4)1(索引9,但后续无连续数字,因此单独匹配'1')
- 输出:
['88', '1']