在Python中通过正则表达式查找子字符串索引的方法?

1 投票
3 回答
677 浏览
提问于 2025-04-16 05:20

我想找到一个子字符串在字符串中的位置,但是这个子字符串很长,而且表达起来很麻烦(可能有多行,还需要转义字符),所以我想用正则表达式来匹配它,并返回这个子字符串的位置。这个功能类似于 str.find 或 str.rfind,有没有什么工具可以帮助我实现这个?

3 个回答

1

在成功匹配的结果对象上使用 .start() 方法(这个结果对象叫做 匹配对象):

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

如果匹配成功,mo.start() 会告诉你在被搜索的字符串中,匹配到的子字符串的第一个位置(索引)。

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

撰写回答