2017-02-01 18 views
1

Я очень новичок в Python. Я понимаю, что функция find принимает строку p и подстроку s и возвращает индекс, в котором s отображается в p. Но если у меня было что-то вродеЕсть ли способ реализовать подстановочный метод с функцией «найти»?

p = 'abc' 
text = 'aaaabbaac' 
text.find(p) 

Можно ли написать метод, который позволяет мне установить подстановочный б и по-прежнему возвращает индекс, при котором а и с матчем, а не возвращаться -1?

Я использую это в классе, который имеет два метода: метод find и метод «setwildcard», который принимает символ и делает то, что я описал выше. По умолчанию для подстановочного знака установлено значение Нет.

+4

Нет. Используйте регулярные выражения и 're.findall()'. – DyZ

+0

Я не знаю, как это сделать. Не могли бы вы объяснить, пожалуйста, – User

+0

Вопрос о том, как использовать регулярные выражения, слишком широк. Взгляните на документацию и попробуйте сами. Модуль называется 're' в Python и является частью стандартной библиотеки. –

ответ

0

Вы можете compile шаблон регулярного выражения в объект регулярного выражения, который может использоваться для сопоставления с использованием его методов match() и search().

import re 
reObj2 = re.compile(pattern) 
reObj2.search(s) 

re.match() будет соответствовать только в начале строки, а не в в начале каждой строки.

re.search() сканирования через строку поиск первого места, где регулярное паттерн экспрессии производит матч, и возвращает соответствующий экземпляр MatchObject.

Также, если вы хотите вернуть все совпадающие совпадения шаблона в строке, вы можете использовать re.findall().

Посмотрите на re.

Надеюсь, это поможет.