给定一个字符串,我需要将一个子字符串替换为另一个子字符串,但只能在两个给定单词之间的区域之外进行。
例如:
substring: "ate" replace to "drank", 1st word - "wolf", 2nd word - "chicken"
input: The wolf ate the chicken and ate the rooster
output: The wolf ate the chicken and drank the rooster
目前,我唯一的解决方案非常不干净:
1)通过替换位于两个单词之间的字符串,将其替换为临时子字符串。
2)替换我最初想要的字符串。
3)将临时字符串恢复为原始字符串。
编辑:
我提出了一个略有不同的问题,以便答案对未来的读者有用。
我的具体需求是根据“:”拆分字符串,当我需要忽略“<”和“>”括号之间的“:”时,这些括号可以链接在一起,唯一的承诺是开放括号的数量等于关闭括号的数量。
例如,在以下情况下:
input a : <<a : b> c> : <a < a < b : b> : b> : b> : a
output [a, <<a : b> c>, <a < a < b : b> : b> : b>, a]
如果答案非常不同,我会开始另一个问题。
re
还是regex
?你考虑过非正则表达式的解决方案吗? - Kobire
正则表达式来完成它。使用regex
模块可以进行递归(如果我没记错的话),但我不确定你是否想要这样做。编写一个循环,计算{
和}
的数量,并在count
为0
时进行替换。 - Kobi