在Python中通过正则表达式查找子字符串索引的方法?
我想找到一个子字符串在字符串中的位置,但是这个子字符串很长,而且表达起来很麻烦(可能有多行,还需要转义字符),所以我想用正则表达式来匹配它,并返回这个子字符串的位置。这个功能类似于 str.find 或 str.rfind,有没有什么工具可以帮助我实现这个?
3 个回答
0
你可以使用“re”这个正则表达式包来帮助你。
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