通过设置子字符串不应该如何开始的约束和子字符串不应该如何结束的约束来设置搜索模式


import re, datetime
input_text = "Por las mañanas de verano voy a la playa, y en la manana del 22-12-22 16:22 pm o quizas mañana en la mañana hay que estar alli y no 2022-12-22 a la manana"
today = datetime.date.today()
tomorrow = str(today + datetime.timedelta(days = 1))
input_text = re.sub(r"b(?:las|la)b[s|]*(?:mañana|manana)bss*b", tomorrow, input_text)
print(repr(input_text))  # --> output

为什么我设置的限制失败了?

目标是不能有任何这些选项(?:las|la),目标是在模式(?:mañana|manana)前面不能有任何这些选项,并且在它后面不能有字母's'后面跟着一个或多个空格ss*

这是正确输出在适当的情况下,你应该在替换后得到

"Por las mañanas de verano voy a la playa, y en la manana del 22-12-22 16:22 pm o quizas 22-12-23 en la mañana hay que estar alli y no 2022-12-22 a la manana"

可以使用

re.sub(r"b(las?s+)?ma[ñn]ana(?!sb)", lambda x: x.group() if x.group(1) else tomorrow, input_text)

正则表达式匹配

  • b- a字边界
  • (las?s+)?-可选的lalas后面跟着一个或多个空格
  • ma[ñn]ana-mañanamanana
  • (?!sb)-如果在单词的末尾有一个s字母,则会导致匹配失败。

如果组1匹配,则不进行替换,如果不匹配,则替换为tomorrow

相关内容

  • 没有找到相关文章

最新更新