поиск строковой подстроки с использованием регулярного выражения в python - PullRequest
0 голосов
/ 29 февраля 2020

Здравствуйте, я пытаюсь найти строку для ее подстрок и вернуть "да", если найден.

для exp: у меня есть строка Deracu876, подстроки {D,d,e,E,r,R,A,a,c,C,u,U,8,7,6}, так вот результат:

  • deracu876: да
  • Deracu8762: нет
  • Dderacu876: да
  • sNdAp725: нет

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

import re

def match(text,pattern):
    # regex 

    # searching pattern 
    if re.search(pattern,text,re.IGNORECASE): 
        return('Yes')
    else: 
        return('No') 

text=input()
pattern=""
for w in text :
    pattern=pattern+'|'+w
print(match("Deracu8762",pattern))

1 Ответ

0 голосов
/ 29 февраля 2020

Ваш for l oop помещает | в начало шаблона, например, если text равно abc, шаблон |a|b|c. Это будет соответствовать пустой строке, которая является подстрокой каждой строки.

Вы можете просто обернуть [] вокруг символов, например, [deracu876]'. Это соответствует любому из этих символов.

Вам также нужно создать другой шаблон, который отклоняет символы, которых нет в text. Вы можете сделать это, поместив символы в [^], например [^deracu876].

def match(text, substring):
    if re.search('[' + substring + ']', text, re.IGNORECASE) and not re.search('[^' + substring '], text, re.IGNORECASE):
        return "True"
    else:
        return "False"

text = input()
print(match("Deracu8762",text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...