比方說,字符串有pattern
這樣(\d+)(X|Y|Z)(!|#)?
digits
出現=>出現X or Y or Z
一個=>! or #
並不總是出現。python3解析字符串(含「*」)使用正則表達式
我想解析字符串並想返回列表。
EX1)海峽= 238Z!32Z#11234X
我要回[238Z!32Z#,11234X]
EX2)海峽= 91X92Y93Z
我要回[91X,92Y,93Z]
下面是我的代碼。
# your code goes here
import re
p=re.compile('^(\d+)(X|Y|Z)(!|#)?$')
L=p.findall("238Z!32Z!11234X")
print(L)
但我得到空的清單[]
。
我怎麼了?
你應該從正則表達式中移除'^'和'$'錨點,因爲它們只會在整個字符串匹配一次時才能進行匹配。 – trincot
感謝您的快速評論。 – newbie16
不僅如果你希望它可以工作,你會刪除錨點,但你也需要使用非捕獲替代組。使用're.findall(r'\ d +(?: X | Y | Z)[!#]?',s)',如果XYZ是實際值,也可以使用字符類。 're.findall(r'\ d + [XYZ] [!#]?',s)'。 –