2010-10-12 1 views
1

Я хочу найти позицию индекса подстроки, но подстрока длинная и сложная для выражения (многострочная, &, даже если вам нужен побег для нее), поэтому я хочу использовать регулярное выражение для их соответствия и вернуть индекс подстроки, функция, такая как str.find или str.rfind, есть ли какая-нибудь помощь в пакете?Есть ли способ найти подстрочный индекс через регулярное выражение в python?

пакет

ответ

0

Нечто подобное может работать:

import re 

def index(longstr, pat): 
    rx = re.compile(r'(?P<pre>.*?)({0})'.format(pat)) 
    match = rx.match(longstr) 
    return match and len(match.groupdict()['pre']) 

Тогда:

>>> index('bar', 'foo') is None 
True 
>>> index('barfoo', 'foo') 
3 
>>> index('\xbarfoo', 'foo') 
2 
1

Используйте метод .start() на результат объекта успешного матча (так называемый объект матча):

mo = re.search('foo', veryLongString) 
if mo: 
     return mo.start() 

Если матч был успешным, mo.start() даст вам (первый) индекс подстроки соответствия в искомой строке.

Смежные вопросы