Python регулярное выражение - иногда шаблон может находиться в конце строки или иногда в середине - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть требование вернуть совпадение, если найден следующий подтекст, но никаких других буквенных символов c не должно быть до или после подтекста.

Например: поиск текста "OCI" в имени файла:

import re

file_pattern = r".*([^a-zA-Z0-9]OCI[^a-zA-Z0-9]).*"
text = "rce oci "

m = re.match(file_pattern, text, re.IGNORECASE) 
if m is not None:
    print(m)
else:
    print("no match found")

Приведенный выше код работает как предназначенный текст = "rce oci" -> совпадение найдено - обратите внимание, что есть дополнительный пробел после oci здесь text = "rceoci" -> совпадение не найдено

Но если text = "rce oci", оно не возвращает совпадение - заметьте, что здесь нет лишних пробелов.

Как я могу это исправить?

Спасибо

1 Ответ

3 голосов
/ 15 апреля 2020

Вы можете использовать границу слова в вашем шаблоне и изменить re.match на re.search:

import re

file_pattern = r"\bOCI\b"
text = "rce oci"

m = re.search(file_pattern, text, re.IGNORECASE) 
if m is not None:
    print(m)
else:
    print("no match found")

Примечание re.match проверяет полное совпадение, что здесь не так с обновленным шаблоном.

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