我有Python代碼是這樣的:Python的正則表達式的結果大於原字符串
a = 'xyxy123'
b = re.findall('x*',a)
print b
這是結果:
['x', '', 'x', '', '', '', '', '']
爲什麼b
有八個元素時a
只有七個字符?
我有Python代碼是這樣的:Python的正則表達式的結果大於原字符串
a = 'xyxy123'
b = re.findall('x*',a)
print b
這是結果:
['x', '', 'x', '', '', '', '', '']
爲什麼b
有八個元素時a
只有七個字符?
有八個 「點」 的字符串中:
| X | Y | X | Y | 1 | 2 | 3 |
他們每個人都是一個正則表達式可以開始的位置。由於您的正則表達式包含空字符串(因爲x*
允許x
的0個副本),所以每個點會生成一個匹配,並且該匹配會附加到b
的列表中。例外情況是開始較長比賽的兩個位置,x
;在msalperen的答案,
空場比賽都包括在結果,除非他們碰另一場比賽的開始,
所以在第一和第三的位置空匹配不包括在內。
根據Python文檔(https://docs.python.org/2/library/re.html):
re.findall返回所有非重疊模式的匹配字符串,作爲 字符串列表。該字符串從左到右掃描,匹配結果 以找到的順序返回。如果 中存在一個或多個組,則返回組的列表;這將是一個元組列表,如果 該模式有多個組。除非他們觸及另一場比賽的開始,否則空的比賽包含在 結果中。
所以它返回所有匹配x *的結果,包括空白的。
我明白了,謝謝。 –