比方说,字符串有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)'。 –