假设我有一个包含许多字符的大型父字符串。如何在某个字符匹配之间插入另一个字符串(另外,删除我匹配字符之间已有的任何字符)?
例如,我的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"
有什么想法吗?我假设这会使用一些正则表达式...
答案 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)