[英]How to insert a string between particular characters in Python?
假设我有一个包含许多字符的大型父字符串。 如何在特定的字符匹配之间插入另一个字符串(此外,还要删除匹配的字符之间已经存在的所有字符)?
例如,保证我的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"
有任何想法吗? 我认为这将使用一些正则表达式...
就像是
>>> 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'
(?<=###### )
正向后面看。 断言#在字符串之前
.*
匹配任何东西
(?= ######)
积极向前看。 断言#跟随字符串
要么
没有环顾四周
>>> re.sub(r'(###### ).*( ######)', r'\1'+smallString+r'\2', largeString)
'Lorem ipsum ###### foo bar ###### dolor sit amet'
像这样:
sections = largeString.split("######", 2)
newString = sections[0] + smallString + sections[2]
可能有一个断言来检查sections
是否确实是三个元素的列表(即找到了两个定界符)。
由于您的定界符是静态字符串,除泛滥(但错误)的“正则表达式可以解决任何问题”的思想外,没有什么理由退出正则表达式了,这似乎席卷了整个世界……
(?<=######)[^#]+
试试看。看演示。
https://regex101.com/r/wV5tP1/9
re.sub(r'(?<=######)[^#]+', smallString, largeString)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.