簡體   English   中英

Python Regex結果比原始字符串長

[英]Python Regex results longer than original string

我有這樣的python代碼:

a = 'xyxy123'
b = re.findall('x*',a)
print b

結果如下:

['x', '', 'x', '', '', '', '', '']  

a只有七個字符時, b具有八個元素又如何呢?

字符串中有八個“斑點”:

| X | Y | X | Y | 1 | 2 | 3 |

它們中的每一個都是可啟動正則表達式的位置。 因為您正則表達式包括空字符串(因為x*允許0拷貝x )中,每個點產生一個匹配,且匹配被附加到列表中的b 唯一的例外是開始較長比賽的兩個地點x 如msalperen的回答,

空匹配項將包含在結果中,除非它們碰到另一個匹配項的開頭,

因此不包括第一和第三位置的空匹配項。

根據python文檔( https://docs.python.org/2/library/re.html ):

re.findall以字符串列表形式返回字符串中所有不重復的模式匹配項。 從左到右掃描該字符串,並以找到的順序返回匹配項。 如果該模式中存在一個或多個組,則返回一個組列表;否則,返回一個列表。 如果模式包含多個組,則這將是一個元組列表。 空匹配項將包括在結果中,除非它們碰到另一個匹配項的開頭。

因此,它將返回所有與x *匹配的結果,包括空結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM