You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建正则模式精准替换时间语境中的'a m'为'am'以规避误替换

西班牙语时间表述中"a m"的精准替换问题

输入字符串示例

#example 1.1
colloquial_hour = "Hola nos vemos a las diez y veinte a m, ten en cuenta que al amanecer tendremos que estar despiertos, porque debemos estar alli a eso de nueve a m o las diez y cuarto a m"
#example 1.2
colloquial_hour = "A mi me parece entre las 10 15 am y las 11 a m, o a las 15 a m aunque quizas a medianoche este bien a eso de las 00:00 a m"
#example 1.3
colloquial_hour = "Puede que a las 10 am. Hay 10 a medias, a m mmm... creo que en 10 estarian para terminar a las 11:00 hs a m 11:59 a m"
#example 1.4
colloquial_hour = "Amediados a mediados del 30 antes de y dia; me parace que hay que estar en casa. Medianamente a, mediados de las 05 a m o cerca de 6 a m."

初步尝试的方法

曾使用简单字符串替换,但会出现误替换:

colloquial_hour = colloquial_hour.replace('a m', 'am ')

期望的正确输出

#example 1.1
colloquial_hour = "Hola nos vemos a las diez y veinte am, ten en cuenta que al amanecer tendremos que estar despiertos, porque debemos estar alli a eso de nueve am o las diez y cuarto am"
#example 1.2
colloquial_hour = "A mi me parece entre las 10 15 am y las 11 am, o a las 15 am aunque quizas a medianoche este bien a eso de las 00:00 am"
#example 1.3
colloquial_hour = "Puede que a las 10 am. Hay 10 a medias, a m mmm... creo que en 10 estarian para terminar a las 11:00 hs am 11:59 am"
#example 1.4
colloquial_hour = "Amediados a mediados del 30 antes de y dia; me parace que hay que estar en casa. Medianamente a, mediados de las 05 am o cerca de 6 am."

精准匹配规则

  • 仅替换数字或时间相关表述后的"a m"为"am"
  • "a m"之后允许的字符:一个或多个空格、句号、逗号,或是字符串结尾
  • 需兼容"am"前的特殊时间后缀,包括::, :, : , hs, hs, hs , h.s., h.s., h.s. , h.s, h.s, h.s 等

特殊场景示例

以下是需兼容的边缘输入与对应输出:

input_t = "a las 12: a m"
output = "a las 12: am"

input_t = "a las 12 : a m"
output = "a las 12 : am"

input_t = "a las 12 hs a m"
output = "a las 12 hs am"

input_t = "a las 12:hs a m"
output = "a las 12:hs am"

input_t = "a las 12: hs a m"
output = "a las 12: hs am"

input_t = "a las 12hsa m"
output = "a las 12hs am"

input_t = "a las 12h.sa m"
output = "a las 12h.s am"

input_t = "a las 12 h.sa m"
output = "a las 12 h.s am"

input_t = "a las 12 h.s.a m"
output = "a las 12 h.s. am"

正则替换解决方案

使用Python的re.sub实现精准匹配替换,正则模式会优先匹配时间相关内容后的"a m",避免误替换无关场景:

import re

# 定义正则模式
pattern = r'(\b(?:diez|nueve|once|[\d:]+(?:\s?hs|\s?h\.s\.?)?)\s*)a m(?=\s*[.,]?\s*$|\s*[.,])'
# 替换匹配到的内容
colloquial_hour = re.sub(pattern, r'\1am', colloquial_hour)

模式说明

  • \b(?:diez|nueve|once|[\d:]+(?:\s?hs|\s?h\.s\.?)?):匹配时间相关词汇(西班牙语数字如diez/nueve,或数字+冒号,附带hs/h.s.等后缀)
  • \s*:匹配时间内容与"a m"之间的任意空格
  • a m:目标替换字符串
  • (?=\s*[.,]?\s*$|\s*[.,]):正向预查,确保"a m"后是空格、标点或字符串结尾

内容的提问来源于stack exchange,提问作者Matt095

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:33:34