我必须解析一个文件(我知道该怎么做),但是,我需要搜索字符串中的特定模式,这就是我有点困惑的地方。
假设我们有以下字符串:
GEO1D1JXUQ2LSO
GOE22D2OKDLALKCDSI
EO212D0FM2KDLA
LAFD21D1FM2KDF3BLA
关于字符串的已知信息是前缀(GEO、GOE、EO、LAFD),并且前缀后有 1、2 或 3 个数字,然后是字母 D,如示例所示。
我事先就有了前缀,但仅此而已。如何搜索每个字符串并确定它属于哪个组?
注意:字符串中还有一些我需要的信息(例如 D 后面的数字),但我只关注如何识别它属于哪个组,这样我就可以获取更多信息组。
我陷入困境,因为前缀中可以存在一些前缀,例如 GEO 中的 EO。
最佳答案
检查前缀的最简单方法就是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')
关于python - 在具有不同大小和相似匹配的字符串中查找完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329766/