Краткое описание
Я работаю над проектом, в котором у меня есть список ключевых слов (содержит специальный символ), и у меня есть строка, я должен проверить, есть ли какие-либо из ключевые слова присутствуют в этой строке и извлекают то же самое. Это будет поиск без учета регистра. Но точное ключевое слово должно присутствовать. Если SAP
является ключевым словом, то sap
является положительным, а saphire
- отрицательным.
Я приложил много усилий, но я смог добиться только результата, который отчасти является тем, что я ищу.
Это пример кода, который вы должны понять:
>>> keywords = ["HIPAA", "ERP(2.0)"]
>>> r = re.compile('|'.join([r'\b%s\b' % w for w in keywords]), flags=re.I)
>>> word = "HIPAAA and ERP(2.0)"
>>> r.findall(word)
['']
здесь я должен получить этот вывод - ["ERP(2.0)"]
Я выписал на этот вопрос: специальные символы Escape regex в Python строке , но это на самом деле не отвечает на мой вопрос.
Может кто-нибудь, пожалуйста, подскажите мне, как сделать эту работу, учитывая, что у меня есть 10 ключевых слов. в котором есть специальный символ, и я импортирую эти ключевые слова из MySQL?
подробное описание
Test 1
>>> keywords = ["HIPAA", "ERP"]
>>> r = re.compile('|'.join([r'\b%s\b' % w for w in keywords]), flags=re.I)
>>> word = "HIPAA and ERP"
>>> r.findall(word)
['HIPAA', 'ERP']
Test 2
>>> keywords = ["HIPAA", "ERP(2.0)"]
>>> r = re.compile('|'.join([r'\b%s\b' % w for w in keywords]), flags=re.I)
>>> word = "HIPAA and ERP(2.0)"
>>> r.findall(word)
['']
Тест 3
>>> keywords = ["HIPAA", "ERP\(2.0\)"]
>>> r = re.compile('|'.join([r'\b%s\b' % w for w in keywords]), flags=re.I)
>>> word = "HIPAA and ERP(2.0)"
>>> r.findall(word)
['HIPAA']
Тест 4
>>> keywords = ["HIPAA", "ERP(2.0)"]
>>> r = re.compile('|'.join([r'\b%s\b' % re.escape(w) for w in keywords]), flags=re.I)
>>> word = r"HIPAASTOL and ERP(2.0)"
>>> r.findall(word)
[]
Тест 5
>>> keywords = ["HIPAA", "ERP(2.0)"]
>>> r = re.compile('|'.join([re.escape(w) for w in keywords]), flags=re.I)
>>> word = r"HIPAASTOL and ERP(2.0)"
>>> r.findall(word)
['HIPAA', 'ERP(2.0)']
Заранее спасибо:)