Нахождение точного соответствия в строке с разностными размерами и с похожими совпадениями - PullRequest
1 голос
/ 27 мая 2019

Мне нужно проанализировать файл (что я знаю, как это сделать), однако мне нужно искать конкретные шаблоны в строке, и это то, где я немного запутался.

Давайтескажем, у нас есть следующие строки:

GEO1D1JXUQ2LSO

GOE22D2OKDLALKCDSI

EO212D0FM2KDLA

LAFD21D1FM2KDF3BLA

То, что известно о строках, это префикс (GEO, GOE, EO, LAFD) и что после префикса есть 1, 2 или 3 цифры, а затем букваD, как показано в примере.

У меня есть префиксы заранее, но это все.Как я могу выполнить поиск по каждой строке и определить, к какой группе она принадлежит?

Примечание: в строке есть некоторая информация (например, число после D), которая мне тоже нужна, но я концентрируюсь только накак определить, в какую группу она входит, чтобы я мог получить больше информации об этой группе.

Я застрял, потому что в префиксах могут существовать некоторые префиксы, например EO в GEO.

1 Ответ

1 голос
/ 27 мая 2019

Самый простой способ проверить префикс - просто 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...