有没有办法在python中通过正则表达式查找子字符串索引?

时间:2010-10-12 03:08:28

标签: python regex indexing string-matching

我想找到一个子串的索引位置,但是子串很长且难以表达(多行,甚至你需要转义它)所以我想使用正则表达式来匹配它们,并返回子串的索引, 像str.find或str.rfind这样的函数, 是否有一些帮助?

3 个答案:

答案 0 :(得分:1)

在成功匹配的结果对象上使用.start()方法(所谓的匹配对象):

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

如果匹配成功,mo.start()将为搜索到的字符串中的匹配子字符串提供(第一个)索引。

答案 1 :(得分:0)

答案 2 :(得分: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