我在python中尝试re.sub,我想捕获两个组并用一个新句子替换。第一组是" cat"第二组是#34;惊人的帽子"。 "猫"是(dot)之前的第一个单词/数字," amazing_hat"是什么之前" .today"
我设法做的最接近的事情是以下
example_sentence = "cat.is.in.the.amazing_hat.today"
regex_command = r'^(.*)\.is\.in\.the\.(.*)\.today'
search_test = re.sub(regex_command, r"\1 bought \2", example_sentence)
print search_test
我得到的结果是"猫买了神奇的",而我想要"猫买了惊人的帽子" (the amazing_hat应该用惊人的(太空)帽子代替)。
当然有可能我可以为上面的例子做,比如替换" _"用" " ,但我想知道我是否可以得到“猫买了惊人的帽子"与re.sub一起去。
答案 0 :(得分:1)
您可以使用替换函数在第二组上应用简单的字符串替换:
search_test = re.sub(regex_command, lambda m : "{} bought {}".format(m.group(1),m.group(2).replace("_"," ")), example_sentence)
我不知道它是否符合“一气呵成”的条件,但是可行的,只进行了1次正则表达式替换。