我必须解析一个文件(我知道该怎么做),但是,我需要搜索字符串中的特定模式,这使我有些困惑。
假设我们有以下字符串:
GEO1D1JXUQ2LSO
GOE22D2OKDLALKCDSI
EO212D0FM2KDLA
LAFD21D1FM2KDF3BLA
关于字符串的已知信息是前缀(GEO,GOE,EO,LAFD),并且在前缀之后有1、2或3个数字,再有字母D,如示例所示。
我事先有前缀,仅此而已。如何搜索每个字符串并确定它属于哪个组?
注意:字符串中也需要一些信息(例如D后面的数字),但是我只专注于如何确定它属于哪个组的信息,因此我可以从中获取更多信息。组。
我很困惑,因为前缀中可能存在一些前缀,例如GEO中的EO。
答案 0 :(得分:1)
检查前缀的最简单方法就是string.startswith()
。
如果您的前缀是其他前缀的前缀(例如AOIO
和AOI
),则只需要小心定义检查顺序即可,以便首先检查较长的前缀。
或者,您可以使用正则表达式提取前缀和所需的其他信息。一个例子:
^([A-Z]*)[0-9]+D([0-9]+)
这将为您提供两个组捕获,第一个是前缀,第二个是D
之后的数字。在此处查看详细信息:https://regex101.com/r/GxSZSI/2
Python中的用法示例:
>>> import re
>>> s = 'GOE22D2OKDLALKCDSI'
>>> m = re.match('^([A-Z]*)[0-9]+D([0-9]+)', s)
>>> m.groups()
('GOE', '2')