使用正则表达式在Python中的两个字符串之间更改文本

使用正则表达式在Python中的两个字符串之间更改文本,python,regex,Python,Regex,我发现了几个类似的问题,但我无法将我的问题与其中任何一个相匹配。我尝试在文本中的两个其他字符串之间查找并替换一个字符串 reg = "%s(.*?)%s" % (str1,str2) r = re.compile(reg,re.DOTALL) result = r.sub(newstring, originaltext) 问题是上面的代码还替换了str1和str2,而我只想替换它们之间的文本。很明显我错过了什么 更新: 我举了一个简单的例子: text = 'abcdefghijklmnopq

我发现了几个类似的问题,但我无法将我的问题与其中任何一个相匹配。我尝试在文本中的两个其他字符串之间查找并替换一个字符串

reg = "%s(.*?)%s" % (str1,str2)
r = re.compile(reg,re.DOTALL)
result = r.sub(newstring, originaltext)
问题是上面的代码还替换了
str1
str2
,而我只想替换它们之间的文本。很明显我错过了什么

更新:

我举了一个简单的例子:

text = 'abcdefghijklmnopqrstuvwxyz'

str1 = 'gh'
str2 = 'op'

newstring = 'stackexchange'

reg = "%s(.*?)%s" % (str1,str2)
r = re.compile(reg,re.DOTALL)
result = r.sub(newstring, text)

print result
结果是
abcdefstackexchangeqrstuvxyz
,而我需要
abcdefghstackexchangepeopqrstuvxyz
在正则表达式中使用

reg = "(?<=%s).*?(?=%s)" % (str1,str2)

reg=“(?如果您可以共享一些示例,那就太好了。发布输入和预期输出。完成!我添加了一个简化示例太好了!很好!我还需要等待2分钟才能选择它作为最佳答案。谢谢
(?<=    # look behind to see if there is:
  gh    #   'gh'
)       # end of look-behind
.*?     # any character except \n (0 or more times)
(?=     # look ahead to see if there is:
  op    #   'op'
)       # end of look-ahead