Как узнать, существует ли строковый шаблон в строке python? - PullRequest
0 голосов
/ 03 марта 2020

Допустим, у меня есть массив строк. Я хочу найти всю строку, содержащую следующую подстроку, charachter di git di git di git charachter (CDDDC будет быть шаблоном). Например, формат будет следующим: H554L K007K

Существует ли какое-либо быстрое совпадение строкового выражения для поиска таких случаев?

Ответы [ 2 ]

3 голосов
/ 03 марта 2020

Подобные вещи являются областью "регулярных выражений". Regex сделан для сопоставления с образцом. Само по себе это широкий ttopi c, слишком много, чтобы объяснить здесь (проверьте regexbuddy или другой сайт ).

python имеет встроенный компилятор regex под re (а также модуль regex). Следовательно, простое решение может быть таким:

word for word in somelist if re.search(r"[a-zA-Z]\d{3}[a-zA-Z]", word)

, которое выполняет итерацию по некоторому списку и выбирает все, что соответствует (полностью) символу в одном из двух «диапазонов», за которым следуют 3 цифры, за которыми следует символ в диапазон.

A, отмеченный в комментариях: re.search будет сопоставлять (находить) любой элемент, у которого есть "часть" этого элемента, соответствующая "шаблону". Таким образом, он будет соответствовать a123b, а также abc b123cd. Если вы хотите sh, чтобы убедиться, что полное "слово" в массиве соответствует подстроке, используйте re.fullmatch.
Fullmatch будет соответствовать a123b, но не abc b123cd, а не ab123cd

1 голос
/ 03 марта 2020

Попробуйте этот пример с этим регулярным выражением:

регулярное выражение: (? I) [AZ] \ d \ d \ d [AZ]

import re
xx = ['aeeea','5eeae','H554L','juan','K007K']
for i in xx:
  r1 = re.findall(r"(?i)[A-Z]\d\d\d[A-Z]", i)
  print (', '.join(r1)
)

Запустить пример онлайн

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...