如何在Python中的特定字符之间插入字符串?

时间:2014-12-05 18:41:13

标签: python regex string

假设我有一个包含许多字符的大型父字符串。如何在某个字符匹配之间插入另一个字符串(另外,删除我匹配字符之间已有的任何字符)?

例如,我的largeString保证包含一组######个(6个哈希字符)。我如何在它之间插入smallString,最后得到类似的东西(我想最好说'创建另一个字符串',因为字符串是不可变的):

largeString = "Lorem ipsum ###### some previous text to be erased ###### dolor sit amet"
smallString = "foo bar"

newString = "Lorem ipsum ###### foo bar ###### dolor sit amet"

有什么想法吗?我假设这会使用一些正则表达式...

3 个答案:

答案 0 :(得分:4)

这样的东西
>>> import re
>>> largeString = "Lorem ipsum ###### some previous text to be erased ###### dolor sit amet"
>>> smallString = "foo bar"
>>> re.sub(r'(?<=###### ).*(?= ######)', smallString, largeString)
Lorem ipsum ###### foo bar ###### dolor sit amet'
  • (?<=###### )背后的正面看法。断言#precedes the string

  • .*匹配任何内容

  • (?= ######)积极展望未来。断言#遵循字符串

无需环顾四周

>>> re.sub(r'(###### ).*( ######)', r'\1'+smallString+r'\2', largeString)
'Lorem ipsum ###### foo bar ###### dolor sit amet'

答案 1 :(得分:1)

这样的事情:

sections = largeString.split("######", 2)
newString = sections[0] + smallString + sections[2]

可能在那里有一个断言,检查sections确实是三个元素的列表(即找到了两个分隔符)。

由于你的分隔符是一个静态字符串,除了猖獗(但是错误的)&#34;正则表达式可以解决任何问题之外,没有任何理由可以提取正则表达式。似乎席卷全球的心态......

答案 2 :(得分:0)

(?<=######)[^#]+

试试这个。看看演示。

https://regex101.com/r/wV5tP1/9

re.sub(r'(?<=######)[^#]+', smallString, largeString)