Я работаю с Python и хочу сопоставить данную строку с несколькими подстроками.Я пытался решить эту проблему двумя разными способами.Моим первым решением было сопоставить подстроку со строкой, такой как:
str = "This is a test string from which I want to match multiple substrings"
value = ["test", "match", "multiple", "ring"]
temp = []
temp.extend([x.upper() for x in value if x.lower() in str.lower()])
print(temp)
, что приводит к temp = ["TEST", "MATCH", "MULTIPLE", "RING"]
Тем не менее, это не тот результат, который я хотел бы.Подстроки должны иметь точное совпадение, поэтому «кольцо» не должно совпадать с «строкой».
Вот почему я пытался решить эту проблему с помощью регулярных выражений, например:
str = "This is a test string from which I want to match multiple substrings"
value = ["test", "match", "multiple", "ring"]
temp = []
temp.extend([x.upper() for x in value if regex.search(r"\b" + regex.escape(x) + r"\b", str,
regex.IGNORECASE) is not None])
print(temp)
что приводит к ["TEST", "MATCH", "MULTIPLE"], правильному решению.Как бы то ни было, это решение занимает слишком много времени для вычисления.Я должен выполнить эту проверку для примерно 1 миллиона строк, и решение с использованием регулярных выражений займет несколько дней, по сравнению с 1,5 часами, которые требуются при использовании первого решения.
Я хотел бы знать, есть ли способ заставить первое решение работать или второе решение работать быстрее.Заранее спасибо
РЕДАКТИРОВАТЬ: value
также может содержать цифры или короткие фразы, такие как "test1 test2"