【发布时间】:2015-04-16 12:50:53
【问题描述】:
给定一个字符串,我需要在两个给定单词之间的 not 区域中将一个子字符串替换为另一个。
例如:
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) 将位于两个单词之间的字符串替换为临时子字符串,通过Replace a string located between
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]
如果答案非常不同,我将开始另一个问题。
【问题讨论】:
-
狼:
{,鸡:},吃:a。这些是否可能:"a { a a } a"、"a {a} a {a} a"、"{a {a} }"、"{a} a a"?您可以编辑问题以解释更多案例吗? -
是的,尤其是 {a {a} },在这种情况下,这些“a”都不应更改。
-
在 Python 中,您使用的是
re还是regex?您是否考虑过非正则表达式解决方案? -
re,python 2.7,但同样适用于 3.4
-
对于我评论中的所有案例(以及更多),我会冒险说你不能用 Python
re正则表达式来做到这一点。使用regex模块,您可以进行递归(IIRC),但我不确定您是否也想去那里。写一个循环,计数{和},当count为0时替换。