[英]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.