как я могу получить шаблоны re в качестве динамического ввода в python?

#python

#python

Вопрос:

Я использую модуль re в python для некоторых операций с регулярными выражениями.Он работает нормально, когда я определил шаблон, который будет сопоставляться статически в программе Python.

Например,

 import re
s="hi can you help me out"
pattern=r'[a-z ]*' #pattern that takes space and lower case letters only
i= re.fullmatch(pattern,s) #to check the entire string
print(i.string)


output:
hi can you help me out
  

Теперь позвольте мне подойти к проблеме, с которой я столкнулся, заключается в том, что если я попытался взять шаблон ввода от пользователя во время выполнения, он выдает исключение.Вот код

 import re
s="hi can you help me out"
pattern=input("Enter pattern:")
i= re.fullmatch(pattern,s)
print(i.string)

output:
Enter pattern:r'[a-z]*'
Exception has occurred: AttributeError
'NoneType' object has no attribute 'string'
  

Надеюсь, кто-нибудь поможет мне разобраться с этой проблемой.

версия python: 3.5

Заранее спасибо

Комментарии:

1. Что вы вводите? отлично работает для Enter pattern:[a-z ]* PS. обратите внимание на r'

2. Открытие r' и закрытие ' не являются частью шаблона

3. поскольку вы ввели r'[a-z ]*' в качестве входных данных не [a-z ]*

4. @GomathiMeena Вы случайно не используете Python 2.x?

5. @GomathiMeena покажите нам ошибку

Ответ №1:

Вам нужно ввести только эту часть [a-z ]* без r префикса string:

Python 3.x:

 import re
s = "hi can you help me out"
pattern = input("Enter pattern:")
i = re.fullmatch(pattern,s)
print(i.string)
  

Python 2.x:

 import re
s = "hi can you help me out"
pattern = raw_input("Enter pattern:")   # since input() in python2.x is the same eval(raw_input()) which would return an int
i = re.fullmatch(pattern,s)
print(i.string)
  

ВЫВОД:

 Enter pattern:[a-z ]*
hi can you help me out