在具有不同大小和相似匹配项的字符串中查找完全匹配项

时间:2019-05-27 16:43:29

标签: python parsing

我必须解析一个文件(我知道该怎么做),但是,我需要搜索字符串中的特定模式,这使我有些困惑。

假设我们有以下字符串:

GEO1D1JXUQ2LSO

GOE22D2OKDLALKCDSI

EO212D0FM2KDLA

LAFD21D1FM2KDF3BLA

关于字符串的已知信息是前缀(GEO,GOE,EO,LAFD),并且在前缀之后有1、2或3个数字,再有字母D,如示例所示。

我事先有前缀,仅此而已。如何搜索每个字符串并确定它属于哪个组?

注意:字符串中也需要一些信息(例如D后面的数字),但是我只专注于如何确定它属于哪个组的信息,因此我可以从中获取更多信息。组。

我很困惑,因为前缀中可能存在一些前缀,例如GEO中的EO。

1 个答案:

答案 0 :(得分:1)

检查前缀的最简单方法就是string.startswith()

如果您的前缀是其他前缀的前缀(例如AOIOAOI),则只需要小心定义检查顺序即可,以便首先检查较长的前缀。

或者,您可以使用正则表达式提取前缀和所需的其他信息。一个例子:

^([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')