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

标签 python parsing

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

假设我们有以下字符串:

GEO1D1JXUQ2LSO

GOE22D2OKDLALKCDSI

EO212D0FM2KDLA

LAFD21D1FM2KDF3BLA

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

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

注意:字符串中还有一些我需要的信息(例如 D 后面的数字),但我只关注如何识别它属于哪个组,这样我就可以获取更多信息组。

我陷入困境,因为前缀中可以存在一些前缀,例如 GEO 中的 EO。

最佳答案

检查前缀的最简单方法就是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')

关于python - 在具有不同大小和相似匹配的字符串中查找完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329766/

相关文章:

java - 两个 jtextfield 之间的加法

Java解析不同的日期类型

javascript - JSON.parse 问题

python - 为什么我的 Trackbar 的值总是 -1

python - 如何将 Spark Streaming 与 TensorFlow 集成?

python - 直接从内置类型继承与其在 Python 中的包装类

c - 查找C的词法分析器和解析器生成器

Python 重载多个 getitems/index 请求

python - 如何使用 bs4 在 python 中抓取单页应用程序网站

ruby - 提取域名中的个别现有词